C语言之选择结构

选择结构(分支结构)
1.关系运算符及其表达式
关系运算符:在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作,比较两个量的运算符就称为
~
< <= >= > 优先级高
== !=  优先级

算术运算符 > 关系运算符 > 赋值运算符
结合性 从左到右

a + b > c - d  (a + b) > (c - d) 
x > 3/2  - > x > 1

a > b > c
a != b == c
C 语言没有专用的逻辑值, 1 表示真  0 表示假
--------------------------------------------------------
2.逻辑运算符及其表达式
三种逻辑运算符
&&(AND) ||(OR) 双目运算符 从左算到由
!(NOT) 单目运算符 从又算到左
优先级
! > && > ||
! > 算术 > 关系 > && 和 || > 赋值
非0即为真
int a = 1,b = 0;
a && b  0
a || b  1
!a  0 

a > b && c > d   (a > b) && (c > d)
!b == c || d > a  ((!b) == c) || (d > a)
char ch = 'X';
!ch 0

a b c
a && b && c
a || b || c 
并不是所有的关系运算符都要算到最后
int a = 1, b = 2, c = 3, d = 4, m = -1, n = -1;
(m = a > b) && (n = c > d);
m = ? n = ?  0 -1
--------------------------------------------------------
3.if语句的三种形式
1) if
if(表达式)
语句
语义: 如果表达式的值为真,就执行其后的语句,否则,不执行
eg1:从键盘输入两个数,输出其中较大的那个
2) if-else
if(表达式)
语句1
else
语句2
语义:如果表达式的值为真,就执行语句1,否则执行语句2
3) if-else-if
if(表达式1)
语句1
else if(表达式2)
语句2
……
else 
语句n
语义:
eg2:根据输入的字符判断其是大写字母capital,小写字母lowercase,数字字符digit 还是其他字符 other 。

使用if语句需要注意的问题
1) if关键后面的表达式通常是逻辑表达式或是关系表达式,但是也可以是其他表达式,如赋值表达式,甚至可以
  是变量
  if(a = 5) // if(5 == a) if(5 = a)
  if(b) -> if(b != 0)
2) 如果在if语句后面要执行多条语句,那么请加上{}以复合语句的形式出现
eg3: 从键盘输入三个数,请按照从小到大的顺序进行输出。

if语句的嵌套问题
在嵌套内的if语句可能又是if-else 类型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和
else的配对问题。

else 总是与它上面的,最近的,统一复合语句中的,未配对的if语句配对


                #include
                int main(int argc,char *argv[])
        {
            char ch = getchar();
            if(ch >= 'A' && ch <= 'Z')
           printf("this is capital\n");
            else if(ch >= 'a' && ch <= 'z')
        printf("this is lowercase\n");
            else if(ch >= '0' && ch <= '9')
         printf("this is digit\n");
            else
    printf("this is other\n");
                return 0;
        }

-----------

---------------------------------------------

4.条件运算符及其表达式
条件运算符为 ? 和: 是一个三目运算符
一般形式为  expression1? expression2:expression3
语义:如果表达式1的值为真,就执行表达式2,否则执行表达式3
if(a > b)
max = a;
else
max = b;
max = (a > b? a:b)
a > b?(max=a):(max=b);
eg: 输入一个字符,判断它是不是大写字母,如果是,将其转换为小写,如果不是,直接输出
if(ch >= 'A' && ch <= 'Z')
ch = ch - 'A' + 'a'
else
ch = ch;
ch >= 'A' && ch <= 'Z'?ch = ch - 'A' + 'a':ch = ch;
ch = (ch >= 'A' && ch <= 'Z'?ch - 'A' + 'a':ch);

优先级:
关系 > 条件 > 赋值
结合性 从右至左
a > b ? a : c > d? c:d - > a > b ? a : (c > d? c:d)
--------------------------------------------------------
5.switch语句
eg4:根据输入的数字输出相应的星期几


注意:
1) 在case后面允许出现多条语句,可以不用{}括起来;
2) 在case 后面的各常量表达式(只能是常量或者常量表达式)必须互不相同,否则会出现出错;
3) 各case 和defaul 的顺序可以任意变动;
4) default 可以省略不写;
5) switch 后面的表达式的内容不能是浮点型,而只能是整型,字符型,枚举性

eg5: 先从键盘输入一个字符(+ - * / %),然后输入两个数字输出这两个数字和符号运算后的结果


    #include
int main(int argc,char *argv[])
{
int num;
scanf("%d",&num);
if(num < 0 || num > 6)
{
printf("input error\n");
return -1;
}
switch(num)
{
case 0:
printf("Sunday\n");
break;
case 1:
printf("Monday\n");
break;
case 6:
printf("Saturday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 5:
printf("Friday\n");
break;
//default:
// printf("input error\n");
}
return 0;
}

          










你可能感兴趣的:(C语言之选择结构)