《浙江大学C颜晖原版课件C4.ppt》由会员分享,可在线阅读,更多相关《浙江大学C颜晖原版课件C4.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章 分支结构程序设计q表达式o关系表达式o逻辑表达式o条件表达式q语句oif 语句o多分支语句(switch)4.1.1 关系运算符和关系表达式q比较两个量(x,y)之间的关系x y x y x=y x!=yq比较的结果:真真 31假假 13int x=2,y=6;x=(y 3)x=(x y)10 x=1x=0关系运算符的优先级运算符优先级:算术运算符 高高 =!=低低d=b+2=3 d=(b+2)=3)b-1=a!=c(b 1)=a)!=c关系表达式3 x 5 x=1时x=4时(3x)5 恒为恒为 14.1.2 逻辑运算符和逻辑表达式3 x 3 并且并且 x 5 3 x&x 1)&(y1
2、)(x1)|(y1)(x1)!(x1)即 x=1逻辑运算符逻辑运算的规则真值表逻辑与&逻辑或|逻辑非!真值表 x y x&y x|y !x假 假 0 0 1假 真 0 1 1真 假 0 1 0真 真 1 1 0 逻辑运算的规则真值表逻辑与&逻辑或|逻辑非!真值表 x y x&y x|y !x假 假 0 0 1假 真 0 1 1真 假 0 1 0真 真 1 1 0 5&7是否合法?0 00 非0非0 0非0 非0!2=?=1逻辑表达式对于 X&Y,X和Y可以是:关系表达式或逻辑量x=33&5(x+y)&7X,Y可以是任意表达式判断逻辑量的真假非0表示真 0表示假逻辑运算的结果1表示真0表示假!算
3、术运算符 =!=&|=,运算符的优先级设 x=1,y=2,c=0 x=y=c&!x+2 3(x=y=c)&(!x+2 3)(x=y)=c)&(!x+2)3)(x=y)=c)&(!x)+2)3)例43写出满足下列要求的表达式 ch 是小写英文字母ch=a&ch 1&x+);y=(31&x+);y=(31|x+);exp1&exp2 先算exp1,若其值为0,STOPexp1|exp2 先算exp1,若其值为1,STOPy=1 x=2y=0 x=1y=1 x=2y=1 x=14.2.1 基本的 if 语句1、if else结构if(exp)statement_1else statement_2语句
4、1表达式语句2非00 x+2 x0y=x2 x0)y=x+2;else y=x*x;if else结构if(exp)statement_1else statement_2scanf(%d%d,&a,&b);if(a!=b)t=a;a=b;b=t;printf(%d,%d,a,b);else printf(a=b);一条语句 一条语句4.2.1 基本的if语句2、省略else的if结构if(exp)statement_1语句1表达式非00ch=getchar();if(ch=a&ch=a&ch=z)ch=ch-a+A;putchar(ch);例47 求最大值输入3个数,输出其中的最大值。#inc
5、lude void main()int a,b,c,max;printf(input a,b,c:n);scanf(%d%d%d,&a,&b,&c);max=a;if(max b)max=b;if(max 0y=0 当 x=0 -1 当 x0)y=1;else if(x=0)y=0;else y=-1;0 x 0 x=0y=1y=0非0 0非0 y=-1输入变量x,计算y:x+1 x1y=x+2 1=x2 x+3 2=x=3例4-9if(x1)y=x+1;else if(x2)y=x+2;else if(x3)y=x+3;else y=x+4;y=x+40 x 1 x 2y=x+1y=x+2非
6、0 0非0 x 0y=0 当 x=0 -1 当 x=0)if(x0)y=1;else y=0;else y=-1;x=0 x 0y=1y=0非0 0非0 y=-10输入变量x,计算y:x+1 x1y=x+2 1=x2 x+3 2=x=3例4-9if(x2)if(x1)y=x+1;else y=x+2;else if(x3)y=x+3;else y=x+4;x 2 x 1y=x+1y=x+2非0 0非0 0 x 0)y=1;else if(x=0)y=0;else y=-1;if(x=0)if(x0)y=1;else y=0;else y=-1;x=0 x 0y=1y=0非0 0非0 y=-10
7、0 x 0 x=0y=1y=0非0 0非0 y=-12种嵌套if语句的比较else 和 if 的匹配if(exp_1)if(exp_2)statement_1else statement_2elseif(exp_3)statement_3else statement_4if(exp_1)if(exp_2)statement_1elseif(exp_3)statement_3else statement_4else 与最靠近它的、没有与别的 else 匹配过的 if 匹配if(exp_1)if(exp_2)statement_1elseif(exp_3)statement_3else state
8、ment_4改变else 和 if 的配对if(exp_1)if(exp_2)statement_1elseif(exp_3)statement_3else statement_4if(exp_1)if(exp_2)statement_1elseif(exp_3)statement_3else statement_4if(exp_1)if(exp_2)statement_1elseif(exp_3)statement_3else statement_4if(exp_1)if(exp_2)statement_1elseelseif(exp_3)statement_3else statement_
9、44.2.3 条件表达式exp1?exp2:exp3非00exp1y=(x0)?x+2:x*x;int n;(n0)?2.9:1n=10n=-102.91.0 x+2 x0y=x2 x0)y=x+2;else y=x*x;4.3 switch语句switch(表达式)case 常量表达式1:语句段段1 case 常量表达式2:语句段段2 .case 常量表达式n:语句段段n default:语句段段n+1switch(表达式)case 常量表达式1:语句段段1 case 常量表达式2:语句段段2 .case 常量表达式n:语句段段n default:语句段段n+1表达式的值表达式的值=常量表达
10、式常量表达式 2 的值的值表表达达式式语句段语句段1语句段语句段2语句段语句段n语句段语句段n+1表达式表达式的值的值=常量表达式常量表达式 1 的值的值表达式的值表达式的值=常量表达式常量表达式 n 的值的值其他其他例413#include void main()int k;scanf(%d,&k);switch(k)case 1:printf(Im in the case1n);case 2:printf(Im in the case2n);case 3:printf(Im in the case3n);default:printf(Im in the defaultn);输入 2输入 6
11、#include void main()int k;scanf(%d,&k);switch(k)case 1:printf(Im in the case1n);break;case 2:printf(Im in the case2n);break;case 3:printf(Im in the case3n);break;default:printf(Im in the defaultn);break;输入 2输入 6if(k=1)printf(Im in the case1n);else if(k=2)printf(Im in the case2n);else if(k=3)printf(I
12、m in the case3n);else printf(Im in the defaultn);例414void main()char c;printf(Please input a character:n);c=getchar();switch(c)case :case n:printf(This is a blank or 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&c=a&c=A&c=Z)printf(This is a letter.n);else printf(This is an other character.n);