前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言选择结构程序设计相关知识【C语言学习笔记】

C语言选择结构程序设计相关知识【C语言学习笔记】

作者头像
岳泽以
发布2022-10-26 16:06:38
9780
发布2022-10-26 16:06:38
举报
文章被收录于专栏:岳泽以博客

1.关系运算符:

> < >= <= == !=

作用:判断关系运算符左右两边的表达式是否满足条件。

5>6---->否(0)

5>=5--->是(1)

优先级:

1.算术运算符>关系运算符>赋值运算符

2.在关系运算内部:(> < >= <=)>(== !=)

代码语言:javascript
复制
#include<stdio.h>
int main(){
    int a=5,b=6,c=2;
    printf("%d\n",a+b>b);//11>b  是(1)
    printf("%d\n",a+b!=b+'a');//11!=10  是(1)
    printf("%d\n",a+b>b>a==b-a);
    //11>b>a=1
    //1>a==1
    //0==1  否(0)
    printf("%d\n",b>a+b>a!=b-a>1);
    //b>11>a!=1>1
    //0>a!=1>1
    //0!=0 否(0)
    return 0;
}

2.逻辑运算符:&&(与)||(或)!(非)

与运算:

a&&b--->如果a和b同时为真(满足),结果为真(是),如果有一个为假,结果为假。

例:1&&1=1; 1&&0=0; 0&&1=0; 0&&0=0 5&&-2=1

注意:C语言中,非0数表示真,0表示假。

或运算:

a||b--->如果a和b为真(满足),结果为真(是),如果a和b同时为假,结果为假。

例:1||1=1; 1||0=1; 0||1=1; 0||0=0; -9||7=1

非运算:

!a--->如果a为真,!a为假,如果a为假,!a为真。

例:!1=0; !0=1; !-1=0

优先级:

!(非)>算术运算符>关系运算符>&&和||>赋值运算符

赋值运算符:从右向左 算术运算符、关系运算符、逻辑运算符:从左到右

例题:若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是多少?

解题思路:

!(2)+2-1&&4+2/2

0+2-1&&4+1

1&&5=1

逻辑运算特性:

存在a&&b,a如果为0,&&后面的b不执行!

存在a||b,a如果为1,||号后面的b不执行!

if语句:

if(只要能返回1或0){

代码语言:javascript
复制
判断是否满足条件

}

例1:定义两个整数,按照由小到大的顺序输出。

代码语言:javascript
复制
#include<stdio.h>
int main(){
    //小 大 按原样输出
    //大 小 交换输出
    int a,b,t;
    scanf("%d%d",&a,&b);
    if(a>b){
    //a和b交换
    t=a;
    a=b;
    b=t;
    }
    printf("%d%d",a,b);
    return 0;
} 

例2:输入一个年付,判断这个年份是否是闰年?

可知:int year 闰年要能被4整除并且不能被100整除或能被400整除

即得:(year%4==0&&year%100!=0)|| year%400==0

代码语言:javascript
复制
#include<stdio.h>
int main(){
    int year;
    scanf("%d",&year);
    if((year%4==0&&year%100!=0)||year%400==0){
        printf("是闰年!"); 
    }else{
        printf("不是闰年!");
    }
    return 0;
}

另可写成:

代码语言:javascript
复制
#include<stdio.h>
int main(){
    int year;
    scanf("%d",&year);
    if((year%4==0&&year%100!=0)||year%400==0)
        printf("是闰年!"); 
    else
        printf("不是闰年!");

    return 0;
}

如果if或else后只要一句话或一个不可分割的整体,{}可以省略。

例3.分段函数

代码语言:javascript
复制
#include<stdio.h>
int main(){
    double x,y;
    scanf("%lf",&x);
    if(x<1)
        y=x;
    else if(x>=1&&x<10)
        y=2*x-1;
    else if(x>=10)
        y=3*x-11;
    printf("y=%f",y);
    return 0;
} 
条件运算符(三目运算符)

如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。

条件运算符?它是一个三目运算符,即有三个参与运算的量。

由条件运算符组成条件表达式的一般形式为:

表达式1 ? 表达式2 表达式3

简洁的if...else语句步骤

如果表达式1为真,执行表达式2;

如果表达式1为假,执行表达式3。

:给定两个整数,输出最大值。

代码语言:javascript
复制
#include<stdio.h>
int main(){
    int a=10;
    int b=20;
    int max;
/*方法一
    if(a>){
        max=a;
    }
    else{
    max=b;
}
*/
/*方法二
    max=a>b?a:b;
*/
/*方法三
    a>b?max=a:max=b;
    printf("max=%d",max);
*/
//方法四
    a>b?printf("%d",a):printf("%d",b); 
    return 0;
} 

:输入一个字符,判断它是否为大写字母,如果是大写字母,转换为小写,如果不是大写字母,则不转换。

代码语言:javascript
复制
#include<stdio.h>
int main(){
    char ch;
    ch=getchar();// scanf("%c",&ch);
/*    if(ch>='A'&&ch<='Z'){
        ch=ch+32;
    }
    ch=ch>='A'&&ch<='Z'?ch+32:ch;
    putchar(ch);
*/ 
    ch>='A'&&ch<='Z'?putchar(ch+32):putchar(ch); 
    return 0;
}

switch语句

switch语句是一种多分支选择语句,在实际应用中,要在多种情况中选择一种情况,执行某一部分语句。

switch语句表达式:
代码语言:javascript
复制
switch(表达式){
    case 常量表达式1:语句块1;
    break;
    case 常量表达式2:语句块2;
    break;
    ……
    case 常量表达式m:语句块m;
    break;
    default:语句块n;
    break;
}

语句结构中的“表达式”的类型为整型(包括char),default语句可以省略,各case标号出现的次序不影响程序的结果,每个case后的标号应不相同。多个case标号后可以共用一组执行语句。

例题:用户输入成绩的等级,输出相应的成绩范围。如:输入A,输出85-100;输入B输出70-84;输入C输出60-69;输入D输出59-0.

代码语言:javascript
复制
#include<stdio.h>
int main(){
    char grade;
    grade=getchar();
    //如果switch中省略掉break,就会从第一个符合条件的语句开始执行,直到switch语句执行完成。
    switch(grade){
        case'A':printf("100-85\n");break;//跳出 
        case'B':printf("84-70\n");break;
        case'C':printf("69-60\n");break;
        case'D':printf("59*0\n");break;
        default:printf("输入成绩错误!");
    } 
    return 0;
} 

典型例题:输入一个5位数,求出每一位数的值。

代码语言:javascript
复制
#include<stdio.h>
int main(){
    int a;
    scanf("%d",&a);
    int ten_thou,thou,hun,ten,indiv;
    ten_thou=a/10000;//万
    thou=a%10000/1000;//千
    hun=a%10000%1000/100;//百
    indiv=a%10000%1000%100%10;//个
    printf("ten_thou=%d\n",ten_thou);
    printf("thou=%d\n",thou);
    printf("hun=%d\n",hun);
    printf("ten=%d\n",ten);
    printf("indiv=%d\n",indiv); 
    return 0;
} 

练习例题:输入一个三位整数,判断这个三位数是否是水仙花数。如果153=1x1x1+5x5x5+3x3x3,就是水仙花数。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021 年 03 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.关系运算符:
  • 2.逻辑运算符:&&(与)||(或)!(非)
    • 与运算:
      • 或运算:
        • 非运算:
          • 优先级:
            • 逻辑运算特性:
            • if语句:
              • 条件运算符(三目运算符)
              • switch语句
                • switch语句表达式:
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档