《浙江大学C颜晖原版C4》由会员分享,可在线阅读,更多相关《浙江大学C颜晖原版C4(35页珍藏版)》请在金锄头文库上搜索。
1、.,第四章 分支结构程序设计,表达式 关系表达式 逻辑表达式 条件表达式 语句 if 语句 多分支语句 (switch),.,4.1.1 关系运算符和关系表达式,比较两个量(x, y)之间的关系 x y x = y x != y 比较的结果: 真 31 假 13,int x=2, y=6; x = (y 3) x = (x y),1 0,x=1 x=0,.,关系运算符的优先级,运算符优先级: 算术运算符 高 = = != = 低,d = b+2 = 3 d = (b+2) = 3) b - 1 = a != c (b 1) = a) != c,.,关系表达式,3 x 5 x=1时 x=4时 (
2、 3x ) 5 恒为 1,.,4.1.2 逻辑运算符和逻辑表达式,3 3 并且 x 5 3 =a,ch=getchar(); if(ch=a ,.,例47 求最大值,输入3个数,输出其中的最大值。 #include void main( ) int a, b, c, max; printf(input a, b, c:n); scanf(%d%d%d, ,a max b c,max,max,.,4.2.2 嵌套的if语句,if (exp) statement1 else statement2,1、 else if 结构 if (exp_1) statement_1 else if(exp_2)
3、 statement_2 else if(exp_n-1) statement_n-1 else statement_n,if 语句,if 语句,嵌套的if语句,if (exp_1) statement_1 else if(exp_2) statement_2 else if(exp_n-1) statement_n-1 else statement_n,n个分支需要n-1次比较,输入变量x, 计算符号函数: 1 当 x0 y = 0 当 x=0 -1 当 x0) y = 1; else if (x=0) y = 0; else y = -1;,输入变量x, 计算y: x+1 x=3,例4-9
4、,if (x1) y = x+1; else if (x0) y = 1; else y = 0; else y = -1;,输入变量x, 计算y: x+1 x=3,例4-9,if (x2) if(x=0) if(x0) y = 1; else y = 0; else y = -1;,2种嵌套if语句的比较,.,else 和 if 的匹配,if (exp_1) if(exp_2) statement_1 else statement_2 else if(exp_3) statement_3 else statement_4,if (exp_1) if(exp_2) statement_1 el
5、se if(exp_3) statement_3 else statement_4,else 与最靠近它的、没有与别的 else 匹配过的 if 匹配,if (exp_1) if(exp_2) statement_1 else if(exp_3) statement_3 else statement_4,.,改变else 和 if 的配对,if (exp_1) if(exp_2) statement_1 else if(exp_3) statement_3 else statement_4,if (exp_1) if(exp_2) statement_1 else if(exp_3) stat
6、ement_3 else statement_4,if (exp_1) if(exp_2) statement_1 else if(exp_3) statement_3 else statement_4,if (exp_1) if(exp_2) statement_1 else else if(exp_3) statement_3 else statement_4,.,4.2.3 条件表达式,exp1 ? exp2 : exp3,非0,0,y = (x0) ? x+2 : x*x;,int n; (n0) ? 2.9 : 1 n = 10 n = -10,2.9 1.0,x+2 x0 y =
7、x2 x0 ) y=x+2; else y=x*x;,.,4.3 switch语句,switch(表达式) case 常量表达式1:语句段1 case 常量表达式2:语句段2 . case 常量表达式n:语句段n default :语句段n+1 ,switch(表达式) case 常量表达式1:语句段1 case 常量表达式2:语句段2 . case 常量表达式n:语句段n default :语句段n+1 ,.,例413,# include void main( ) int k; scanf(%d, ,输入 2,输入 6,# include void main( ) int k; scanf(
8、%d, ,输入 2,输入 6,if(k=1) printf ( Im in the case1n ); else if(k=2) printf ( Im in the case2n ); else if(k=3) printf ( Im in the case3n ); else printf ( Im in the defaultn);,.,例414,void main( ) char c; printf(Please input a character:n); c = getchar(); switch(c) case : case n: printf(This is a blank or
9、 enter); break; case 0 : case 1 : case 2 : case 3 : case 4 : case 5 : case 6 : case 7 : case 8 : case 9 : printf(This is a digit.n); break; default: printf(This is an other character. n); ,输入 2,输入 a,几个常量表达式共有一个语句段,.,例410,# include void main( ) char c; printf(Please input a character:n); c = getchar(); if(c= | c=n) printf(This is a blank or enter); else if(c=0 ,