资源预览内容
第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第4章 选择结构 4.1 关系运算和逻辑运算 4.2 if语句和用if语句构成的选择结构 4.3 条件表达式构成的选择结构 4.4 switch语句以及用switch和break语 句构成的选择结构 4.5 语句标号和goto语句4.1 关系运算和逻辑运算4.1.1 C语言的逻辑值关系表达式和逻辑表达式的运算结果是一个逻辑值。逻辑值真假非004.1 关系运算和逻辑运算4.1.2 关系运算符和关系表达式1. 关系运算:是对两个量进行“比较运算”。2. 关系运算符:= = !=高低 3. 结合性:自左向右(左结合)4. 和其他运算符进行混合运算时,其运算符之间的优先级为:算术运算符、关系运算符、赋值运算符、逗号运算符 低高 5. 关系表达式:由关系运算符组成的表达式,称为关系表达式。关系运算符两边的运算对象可以是C语言中任意合法的表达式。例如:a=b(a=3)(b=4)ac=c例如:a=10;b=6;c=15; cab真 假 假关系运算的值为“逻辑值”真假101 0 04.1 关系运算和逻辑运算4.1.3 逻辑运算符和逻辑表达式1. 逻辑运算符: b=16;x=5;y=8;0 1 1其逻辑运算规则见书中表4.1所示。思考:53printf(“Enter xscanf(“%d%d“,if(xy) printf(“x=%dn“,x);if(x main() int a,b,c;printf(“input a,b,c:“);scanf(“%d%d%d“,printf(“a=%d,b=%d,c=%dn”,a,b,c);/*输出原始数据*/排序过程;printf(“%d,%d,%dn“,a,b,c); abc3020101.ab 2.ac 3.bc交换两个变量中的值 交换两个变量中的值 交换两个变量中的值302020102030if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t;#include main() int a,b,c,t;printf(“input a,b,c:“);scanf(“%d%d%d“,printf(“a=%d,b=%d,c=%dn“,a,b,c);if(ab) t=a;a=b;b=t;if(ac) t=a;a=c;c=t;if(bc) t=b;b=c;c=t;printf(“%d,%d,%dn“,a,b,c); input a,b,c:30 20 10 a=30,b=20,c=10 10,20,304.2 if语句和用if语句构成的选择结构4.2.1 if语句 例4.3 输入两个数,分别赋给x和y,输出其中的大数。程序分析:1. 输入两个数分别赋给变量x和y。 2. 输出其中的最大数:两数进行比较判断。如果xy,则输出x;否则,输出y。开始输入x、y结束xy输出x输出y不满足满足 #include main() int x,y;printf(“Enter xscanf(“%d%d“,printf(“x,y:%d %dn“,x,y);if(xy)printf(“max=x=%dn“,x);elseprintf(“max=y=%dn“,y);printf(“* * end * *n“); Enter x否则,输出NO。n%3=0(若能整除,则余数肯定为0)开始输入n结束n%3=0输出YES输出yNO不满足满足#include main() int n;printf(“input n:“);scanf(“%d“,if(n%3=0) /*判断n能否被3整除*/printf(“YESn“);elseprintf(“NOn“); input n:9 YESinput n:5 NO4.2 if语句和用if语句构成的选择结构4.2.1 if语句注意(1) if后面圆括号中的表达式,可以是任意合法的C语言 表达式(如:逻辑表达式、关系表达式、算术表达式、 赋值表达式等),也可以是任意类型的数据(如:整型、实型、 字符型、指针型等)。(2) 无论是否有else子句,if子句中如果只有一条语句,则此语句后的分号不能 省略。如: if(x!=0) printf(“%f”,x);else printf(“%f”,y);此处的分号不能省略此处的分号也不能省略4.2 if语句和用if语句构成的选择结构4.2.2 嵌套的if语句第一种嵌套形式:if(表达式1)if(表达式2) 语句1else 语句2 else 语句3 图 1表达式1语句3不满足表达式2语句1语句2满足满足不满足4.2 if语句和用if语句构成的选择结构4.2.2 嵌套的if语句第二种嵌套形式:if(表达式1)if(表达式2) 语句1 else 语句2 图 2表达式1语句2不满足满足表达式2语句1满足不满足注意在if子句中的一对花括号 不可缺少。if(表达式1)if(表达式2) 语句1 else 语句2 应当注意if与else的配对关系。 else总是与它上面的最近的尚未配对的if配对。4.2 if语句和用if语句构成的选择结构4.2.2 嵌套的if语句第三种嵌套形式:if(表达式1) 语句1 else if(表达式2) 语句2else 语句3 表达式1不满足满足语句1表达式2语句2语句3满足不满足图 3if(表达式2) 语句2else 语句34.2 if语句和用if语句构成的选择结构4.2.2 嵌套的if语句第四种嵌套形式:if(表达式1) 语句1 else if(表达式2) 语句2 表达式1不满足满足语句1表达式2语句2满足不满足图 4if(表达式2) 语句24.2 if语句和用if语句构成的选择结构4.2.2 嵌套的if语句第五种嵌套形式:if(表达式1) 语句1 else if(表达式2) 语句2else if(表达式3) 语句3elseif(表达式4) 语句4:else语句nif(表达式2) 语句2else 语句3if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 else if(表达式4) 语句4: else 语句n表达式1语句1表达式2表达式3表达式4语句2语句3语句4语句n真真真真假假假假4.2 if语句和用if语句构成的选择结构4.2.2 嵌套的if语句 例4.5 编写程序,根据输入的学生成绩给出相应的等级,大于或等于90分以上 的等级为A,60分以下的等级为E,其余每10分为一个等级。程序的意思为:成绩(g)大于等于90分以上(g=90):A 成绩(g)大于等于80分以上(g=80):B 成绩(g)大于等于70分以上(g=70):C 成绩(g)大于等于60分以上(g=60):D 成绩(g)不及格(g=90g=80g=70g=60真真真真假假假假输出A输出B输出C输出D输出E#include main() int g;printf(“Enter g:“);scanf(“%d“,printf(“g=%d:“,g);if(g=90) printf(“An“);else if(g=80) printf(“Bn“);else if(g=70) printf(“Cn“);else if(g=60) printf(“Dn“);else printf(“En“); Enter g:72 g=72:CEnter g:55 g=55:E4.3 条件表达式构成的选择结构1. 条件运算符? :三目运算符2. 条件表达式表达式1?表达式2:表达式3例如:20+30=100?50:1003. 优先级 赋值运算符、条件运算符、关系运算符、算术运算符 低高例如:y=x10?100:200y=(x10?100:200)if(x10) y=100 else y=200又如:printf(“abs(x)=%dn”,x main() int g;printf(“Enter a mark:”);scanf(“%d”,printf(“g=%d:”,g);switch(g/10)case 10:case 9:printf(“An”);case 8:printf(“Bn”);case 7:printf(“Cn”);case 6:printf(“Dn”);default:printf(“En”); #include main() int g;printf(“Enter g:“);scanf(“%d“,printf(“g=%d:“,g);if(g=90) printf(“An“);else if(g=80) printf(“Bn“);else if(g=70) printf(“Cn“);else if(g=60) printf(“Dn“);else printf(“En“); Enter a mark:85 g=85:B C D Ebreak; break; break;break;break;/*最后一个也可以不要*/Enter a mark:100 g=100:AEnter a mark:45 g=45:EEnter a mark:85 g=85:B4.5 语句标号和goto语句请看下面的程序例子:#include main() int i,sum=0;i=1;if(i=y)if(a main() int w=4,x=3,y=2,z=1;printf(“%dn“,(w main() int a,b,s;scanf(“%d%d“,s=a;if(a0) y=1; else y=0; 其能正确表示的数学函数关系是A y=-1(x0)B y=1(x0)C y=0(x0)D y=-1(x0)4.9 有以下程序: #include main() int k=-3;if(k4 4.17 请写出以下程序的输出结果_. #include main() int a=100;if(a100) printf(“%dn“,a100);else printf(“%dn“,a0) B) !0非00 低 高 高 ! a=b | a41xc)b=a;a=c;c=b; 4.20 若变量已正确定义,以下语句段的输出结果是_ x=0;y=2;z=3; switch(x) case 0:switch(y=2)case 1:printf(“*“);break;case 2:printf(“%“);break;case 1:switch(z)case 1:printf(“$“);case 2:printf(“*“);break;default:printf(“#“); 3 2 2*#
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号