版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、青岛理工大学琴岛学院青岛理工大学琴岛学院第五章 选择控制语句2 主要内容:主要内容:5.15.1 特殊特殊C C语句语句5.25.2 单分支单分支ifif语句语句5.35.3 双分支双分支if-elseif-else语句语句5.4 if5.4 if语句的嵌套语句的嵌套5.5 if-5.5 if- elseifelseif -else-else多分支语句多分支语句5.6 switch5.6 switch语句语句2021-10-14本章要求:理解选择结构应用场景理解选择结构应用场景能够应用选择结构分析、解决问题能够应用选择结构分析、解决问题掌握单分支和双分支的执行过程掌握单分支和双分支的执行过程重
2、点:重点:ifif语句、语句、if else if else 语句语句难点:难点:ifif语句嵌套执行过程语句嵌套执行过程5.15.1 特殊特殊C C语句语句1、空语句2、符合语句主要掌握两种语句的主要掌握两种语句的格式格式和和用法用法 格式:格式: ; 作用:不执行任何操作,可以改变程序结构的控制范围。作用:不执行任何操作,可以改变程序结构的控制范围。5.1 5.1 特殊特殊C C语句语句1 1、空语句、空语句 2021-10-145l 说明:说明: (1)(1) l 一般形式为:一般形式为: 数据说明部分;数据说明部分; 执行语句部分;执行语句部分; 5.1 5.1 特殊特殊C C语句语句
3、2 2、复合语句、复合语句 2021-10-146选择结构的分类:单分支: if (表达式) 内嵌语句双分支 : if (表达式) 内嵌语句1 else 内嵌语句2多分支 : 1)条件范围的if - else if - else 2)原子值的swith8ifif(表达式表达式) 内嵌内嵌语句语句l功能:功能:计算表达式的值,如果是一个非计算表达式的值,如果是一个非0 0值(即逻辑真),值(即逻辑真),就执行内嵌语句,否则(即逻辑假)跳过内嵌语句,就执行内嵌语句,否则(即逻辑假)跳过内嵌语句,顺序执行后续语句。顺序执行后续语句。 内嵌语句,可为:内嵌语句,可为: 赋值语句赋值语句 函数调用语句函
4、数调用语句 控制语句控制语句 复合语句复合语句 空语句空语句可为算术、关系、逻辑、赋值可为算术、关系、逻辑、赋值等表达式等表达式1 1、格式、格式5.2 5.2 单分支单分支ifif语句语句2021-10-149例如:例如: ifif (x0) m+; (x0) m+; ifif ( ab )( ab ) t=a; a=b; b=t; t=a; a=b; b=t; 表达式非表达式非0 T F 语句语句N-S结构图结构图/ /* *()后无()后无“;”* */ / /* * 后无后无“;”* */ /5.2 5.2 单分支单分支ifif语句语句流程图流程图: :2021-10-14TF2 2、
5、执行过程、执行过程10【例【例5.15.1】根据股票交易额(根据股票交易额(valuevalue)的不同,股票经纪人佣)的不同,股票经纪人佣金(金(commissioncommission)的计算方式也不同,计算方式为:)的计算方式也不同,计算方式为:5.2 5.2 单分支单分支ifif语句语句2021-10-1411#include #include #define MIN 39#define MIN 39int main() int main() double value; double value;double commission;double commission;printf(Pl
6、ease input the value:);printf(Please input the value:);scanf(%lf,&value);scanf(%lf,&value);ifif(value2500)(value=2500&value=2500&value=6250&value=6250&value=20000&value=20000&value=50000&value=50000&value500000)(value500000)commission=255+0.0009commission=255+0.0009* *value;value; commission=commiss
7、ionMIN?MIN:commission; commission=commissionMIN?MIN:commission; printf(The commission is $%.2fn,commission); printf(The commission is $%.2fn,commission); return 0; return 0; 程序运行情况如下:程序运行情况如下:Please input the value:Please input the value:1800018000 The commission is$137.20The commission is$137.205.2
8、 5.2 单分支单分支ifif语句语句2021-10-1413【例【例5.2 5.2 】经常出国旅行的驴友都知道,需要时时了解当地的气温状况,经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:有些使用华氏温度标准(但不少国家采用了不同的温度计量单位:有些使用华氏温度标准(F F),有),有些使用摄氏温度(些使用摄氏温度(C C)。现在,根据温度转换公式)。现在,根据温度转换公式设计一个温度转换程序,设计一个温度转换程序,可以进行温度转换。可以进行温度转换。如果输入摄氏温度,显示转换的华氏温度;如果输入华如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温
9、度,显示转换的摄氏温度。输出说明:相应的转换后的温度值(保留小氏温度,显示转换的摄氏温度。输出说明:相应的转换后的温度值(保留小数点后数点后2 2位)。位)。 如果从华氏转摄氏,须输出:如果从华氏转摄氏,须输出:The Centigrade is XX.XXThe Centigrade is XX.XX如果从摄氏转华氏,须输出:如果从摄氏转华氏,须输出:The Fahrenheit is XX.XXThe Fahrenheit is XX.XX范例输入:范例输入:1 -301 -30范例输出:范例输出:The Centigrade is -34.44The Centigrade is -34.
10、445.2 5.2 单分支单分支ifif语句语句2021-10-1414#include #include int main() int main() int a; double f,c; int a; double f,c; printf(“ printf(“确定转换的类型:华氏转摄氏确定转换的类型:华氏转摄氏(1);(1);摄氏转华氏摄氏转华氏(2);n); (2);n); scanf(%d,&a); scanf(%d,&a); if(a=if(a=2 2) ) printf( printf(请输入华氏温度:请输入华氏温度:);); scanf(%lf,&f); scanf(%lf,&f)
11、; c=(f-32) c=(f-32)* *5/9; 5/9; printf(The Centigrade is %.2f n,c); printf(The Centigrade is %.2f n,c); (未完待续)(未完待续)5.2 5.2 单分支单分支ifif语句语句2021-10-1415(接上页)(接上页)if(a=if(a=1 1) ) printf( printf(请输入摄氏温度:请输入摄氏温度:);); scanf(%lf,&c); scanf(%lf,&c); f=(c f=(c* *9/5)+32; 9/5)+32; printf(The Fahrenheit is %.
12、2f n,f); printf(The Fahrenheit is %.2f n,f); return 0; return 0; 程序运行情况如下:程序运行情况如下: input a : 1 input a : 1 请输入华氏温度:请输入华氏温度:Input Input :350350 The Centigrade isThe Centigrade is 176.67 176.675.2 5.2 单分支单分支ifif语句语句2021-10-1416 主要内容:主要内容:5.15.1 特殊特殊C C语句语句5.25.2 单分支单分支ifif语句语句5.35.3 双分支双分支if-elseif-e
13、lse语句语句5.4 if5.4 if语句的嵌套语句的嵌套5.5 if-5.5 if- elseifelseif -else-else多分支语句多分支语句5.6 switch5.6 switch语句语句2021-10-1417u功能:功能: 计算表达式的值,如果它的值是一个非计算表达式的值,如果它的值是一个非0 0值(逻辑真),就执值(逻辑真),就执行内嵌语句行内嵌语句1 1,之后跳过内嵌语句,之后跳过内嵌语句2 2,执行后续语句;否则跳,执行后续语句;否则跳过内嵌语句过内嵌语句1 1,执行内嵌语句,执行内嵌语句2 2,之后执行后续语句。,之后执行后续语句。 5.3 5.3 双分支双分支if-
14、elseif-else语句语句1 1、格式、格式if if (表达式表达式) 语句语句1 1 else else 语句语句2 2 后续语句后续语句2021-10-1418例如:例如: if if (x0) m+; (x0) m+; elseelse m-;m-; ifif ( ch= a & ch= a & ch= z ) ch=ch-32 ;ch=ch-32 ; printf( %cn,ch); printf( %cn,ch); else else printf( %cn,ch) ;printf( %cn,ch) ; 表达式非表达式非0 T F 语句语句1 语句语句2N-S结构图结构图5.3
15、 5.3 双分支双分支if-elseif-else语句语句流程图流程图: :2021-10-14TF2 2、执行过程、执行过程19【例【例5.35.3】输入两个数,分别赋给输入两个数,分别赋给x x和和y y,输出其中大数,输出其中大数5.3 5.3 双分支双分支if-elseif-else语句语句# #include include main( )main( ) int x, y; int x, y; printf (Enter X & Y:); printf (Enter X & Y:); scanf (%d%d, &x, &y); scanf (%d%d, &x, &y); printf
16、 (“ X ,Y:%d %dn“,x,y); printf (“ X ,Y:%d %dn“,x,y); if if ( x y ) printf (“max=x=%dn“,x);( x y ) printf (“max=x=%dn“,x); else else printf (“max=y=%dn“,y);printf (“max=y=%dn“,y); printf (“ printf (“* * *endend* * *n”);n”); 程序运行情况如下:程序运行情况如下:Enter X & Y:Enter X & Y: 4 5 4 5 X,Y:4 5X,Y:4 5max=y=5max=y=
17、5* * *endend* * *2021-10-14(1) if(1) if语句后小括号不能省略语句后小括号不能省略 。 (2) (2) 表达式可以是表达式可以是C C允许的任意类型表达式,甚至可以是允许的任意类型表达式,甚至可以是一个变量。一个变量。 (3)(3)注意每个分支的控制范围,用注意每个分支的控制范围,用括起来。如果只有一括起来。如果只有一条语句,可以省略条语句,可以省略。几点说明:几点说明:5.3 5.3 双分支双分支if-elseif-else语句语句 例例 考虑下面程序的输出结果考虑下面程序的输出结果: : # #include include main() main()
18、int x,y,z; int x,y,z; scanf(“%d,%d”,&x,&y); scanf(“%d,%d”,&x,&y); if(xy) if(xy) z=x; x=y; y=z; z=x; x=y; y=z; else else x+; y+; x+; y+; printf(“%d,%dn”,x,y); printf(“%d,%dn”,x,y); Compile Error!2021-10-1420215.3 5.3 双分支双分支if-elseif-else语句语句2021-10-14 (4) (4) 在在ifif语句中,区分语句中,区分“=”“=”与与“=”“=”的不同。的不同。(
19、5 5)if(x) if(x) if(x!=0) if(x!=0) if(!x) if(!x) if(x=0) if(x=0)5.4 5.4 判断任意一个整型数据的奇偶性。判断任意一个整型数据的奇偶性。void mainvoid main()() int a; int a; scanf(%d,&a); scanf(%d,&a); if(a%2=0) if(a%2=0) printf(%d printf(%d是偶数!是偶数!n,a);n,a); else else printf(%d printf(%d是奇数!是奇数!n,a);n,a); 5.3 5.3 双分支双分支if-elseif-else
20、语句语句23 主要内容:主要内容:5.15.1 特殊特殊C C语句语句5.25.2 单分支单分支ifif语句语句5.35.3 双分支双分支if-elseif-else语句语句5.4 if5.4 if语句的嵌套语句的嵌套5.5 if-5.5 if- elseifelseif -else-else多分支语句多分支语句5.6 switch5.6 switch语句语句2021-10-1424 if(表达式表达式1) if(表达式表达式2)语句语句1 else 语句语句2else 语句语句3 if(表达式表达式1) if(表达式表达式2)语句语句1 else 语句语句2 省掉省掉 if(表达式表达式1)
21、 if(表达式表达式2)语句语句1 else 语句语句2 程序发生了变化程序发生了变化 (1 1)在)在ifif中嵌套带有中嵌套带有elseelse子子句的句的ifif语句:语句:(2 2)在)在ifif中嵌套不含中嵌套不含elseelse子子句的句的ifif语句:语句:5.4 if5.4 if语句的嵌套语句的嵌套1 1、格式、格式2021-10-1425(3 3)在)在elseelse中嵌套带有中嵌套带有elseelse子句的子句的ifif语句:语句: if(表达式表达式1)语句语句1else if(表达式表达式2)语句语句2 else 语句语句3或写成或写成 if(表达式表达式1)语句语句
22、1else if(表达式表达式2)语句语句2 else 语句语句3 if(表达式表达式1)语句语句1else if(表达式表达式2)语句语句2或写成或写成 if(表达式表达式1)语句语句1else if(表达式表达式2)语句语句2(4 4)在)在elseelse中嵌套不含中嵌套不含elseelse子句的子句的ifif语句:语句:5.4 if5.4 if语句的嵌套语句的嵌套2021-10-14265.4 if5.4 if语句的嵌套语句的嵌套2 2、执行过程、执行过程假假真真真真假假表达式1语句2语句1表达式2语句3流程图:以流程图:以ifelse ifelse ifelseifelse为例为例2
23、021-10-145.4 if5.4 if语句的嵌套语句的嵌套elseelse配对配对例如:例如: if if(x1x1) if if(x10 x10) y=1; y=1; else y=2; else y=2; /容易引起二义性的书写格式容易引起二义性的书写格式 虽然将虽然将elseelse写在与第一个写在与第一个ifif相同的层次上,企图使得两者相同的层次上,企图使得两者配对,但由于配对,但由于elseelse与第二个与第二个ifif相邻最近,实际上相邻最近,实际上elseelse与第二个与第二个ifif配对,也即将执行配对,也即将执行y=2y=2。2021-10-14275.4 if5.
24、4 if语句的嵌套语句的嵌套 改进的办法是使用复合语句形式,改为:改进的办法是使用复合语句形式,改为: if if(x1x1) ifif(x10 x10) y=1; y=1; else y=2; else y=2; 此时,当此时,当x=1x10 x10时,时,y=1y=1。 2021-10-14285.4 if5.4 if语句的嵌套语句的嵌套【例例5.5.5 5】 计算分段函数计算分段函数y y的值。的值。x0 x0时时y = x+1y = x+1x=0 x=0 时时y = xy = xx0 x0时时y = x-1 y = x-1 算法描述:算法描述: 首先判断输入数值在首先判断输入数值在x
25、x的哪段区间上;然后以输入数值所的哪段区间上;然后以输入数值所对应的函数计算出对应的函数计算出y y值。值。2021-10-14295.4 if5.4 if语句的嵌套语句的嵌套# include # include int main ( )int main ( ) int x, y;int x, y;scanf (%d, &x);scanf (%d, &x);ifif (x=0) (x=0) / if / if嵌套形式嵌套形式ifif (x0) y=x+1; (x0) y=x+1;elseelse y=x; y=x;elseelse y=x-1; y=x-1;printf (x=%d, y=%
26、dn, x, y);printf (x=%d, y=%dn, x, y);return 0;return 0; 程序运行情况如下:程序运行情况如下:10 10 x=10,y=11x=10,y=112021-10-143031【例【例5.5.6 6】根据输入的学生成绩给出相应的等级,大于或等于根据输入的学生成绩给出相应的等级,大于或等于9090分分以上的等级为以上的等级为A A,6060分以下的等级为分以下的等级为E E其余每其余每1010分为一个等级。分为一个等级。#include #include main( )main( ) int g; int g; printf (“Enter g:)
27、; printf (“Enter g:); scanf (%d, &g); scanf (%d, &g); if if ( g=90) printf (“An”);( g=90) printf (“An”); elseelse if if ( g=80) printf (“Bn”);( g=80) printf (“Bn”); else else if if ( g=70) printf (“Cn”);( g=70) printf (“Cn”); elseelse if if ( g=60) printf (“Dn”);( g=60) printf (“Dn”); else else prin
28、tf (“En”);printf (“En”); 程序运行情况如下:程序运行情况如下:Enter g:Enter g: 59 59 E E2021-10-145.4 if5.4 if语句的嵌套语句的嵌套32 主要内容:主要内容:5.15.1 特殊特殊C C语句语句5.25.2 单分支单分支ifif语句语句5.35.3 双分支双分支if-elseif-else语句语句5.4 if5.4 if语句的嵌套语句的嵌套5.5 if-5.5 if- elseelse ifif -else-else多分支语句多分支语句5.6 switch5.6 switch语句语句2021-10-1433多层嵌套多层嵌套i
29、fif语句一般格式语句一般格式if if (表达式表达式1 1) 语句语句1 1 else if else if (表达式表达式2 2) 语句语句2 2 else if else if (表达式表达式m m) 语句语句m m else else 语句语句 n n5.5 if-else if-else5.5 if-else if-else多分支语句多分支语句1 1、格式、格式2021-10-1434功能:功能:l依次计算并判断表达式依次计算并判断表达式i i,为非为非0 0时执行后面的语句,时执行后面的语句,都为都为0 0时,执行语句时,执行语句n nl无论执行完哪个语句分支,都转到后续语句无论
30、执行完哪个语句分支,都转到后续语句5.5 if-else if-else5.5 if-else if-else多分支语句多分支语句2021-10-1435流程图流程图5.5 if-else if-else5.5 if-else if-else多分支语句多分支语句2021-10-14FFTFTTFT2 2、执行过程、执行过程36N-SN-S结构图结构图l例如:例如:5.5 if-else if-else5.5 if-else if-else多分支语句多分支语句2021-10-1437【例【例5.5.6 6】根据输入的学生成绩给出相应的等级,大于或等于根据输入的学生成绩给出相应的等级,大于或等于9
31、090分分以上的等级为以上的等级为A A,6060分以下的等级为分以下的等级为E E其余每其余每1010分为一个等级。分为一个等级。5.5 if-else if-else5.5 if-else if-else多分支语句多分支语句#include #include main( )main( ) int g; int g; printf (“Enter g:); printf (“Enter g:); scanf (%d, &g); scanf (%d, &g); if if ( g=90) printf (“An”);( g=90) printf (“An”); else if else if
32、( g=80) printf (“Bn”);( g=80) printf (“Bn”); else if else if ( g=70) printf (“Cn”);( g=70) printf (“Cn”); else if else if ( g=60) printf (“Dn”);( g=60) printf (“Dn”); else else printf (“En”);printf (“En”); 程序运行情况如下:程序运行情况如下:Enter g:Enter g: 59 59 E E2021-10-1438例如:例如: if if (c=100)(c=50) printf(50=c
33、=50) printf(50=c=100n); if if (c=100)(c=50) printf(50=c=50) printf(50=c=100n);elseelse printf(c50n);printf(c50n);elseelse if if (c=150) printf(100c=150n);(c=150) printf(100c150n);printf(c150n); if if (c=100)(c=50) printf(50=c=50) printf(50=c=100n);elseelse printf(“c50n”);printf(“cb) if(ac)if(ad) m=1
34、; else m=2; else m=3;问题:哪一个问题:哪一个 elseelse 和哪一个和哪一个 if if 相匹配相匹配? ?规则:在规则:在嵌套的嵌套的ififelseelse语句语句中,中,elseelse总是与总是与上面的离它最近的尚上面的离它最近的尚 未配对的未配对的if if 配对。配对。5.5 if-else if-else5.5 if-else if-else多分支语句多分支语句2021-10-1440例:例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);修改:修改: if (a=b) if(b=c) pri
35、ntf(“a=b=c”); else printf(“a!=b”);实现实现if else if else 正确配对方法:加正确配对方法:加 5.5 if-else if-else5.5 if-else if-else多分支语句多分支语句2021-10-14415.5 if-else if-else5.5 if-else if-else多分支语句多分支语句2021-10-1442 主要内容:主要内容:5.15.1 特殊特殊C C语句语句5.25.2 单分支单分支ifif语句语句5.35.3 双分支双分支if-elseif-else语句语句5.4 if5.4 if语句的嵌套语句的嵌套5.5 if
36、-5.5 if- elseifelseif -else-else多分支语句多分支语句5.6 switch5.6 switch语句语句2021-10-1443switch switch (表达式表达式) case case 常量表达式常量表达式1: 1: 语句序列语句序列1 1 case case 常量表达式常量表达式2: 2: 语句序列语句序列2 2 case case 常量表达式常量表达式n: n: 语句序列语句序列n n default : default : 语句序列语句序列n+1 n+1 C语言关键字Switch语句体5.6 switch 5.6 switch 语句语句1 1、格式、格
37、式2021-10-14445.6 switch 5.6 switch 语句语句l功能:功能:计算表达式的值,与常量表达式的值比较,等于第计算表达式的值,与常量表达式的值比较,等于第i i个值时,个值时,顺序执行顺序执行语句序列语句序列i i、i+1i+1、 、 n+1 n+1,若与所有常量表,若与所有常量表达式值都不相等,执行语句序列达式值都不相等,执行语句序列n+1n+1。2021-10-14. 5.6 switch 5.6 switch 语句语句流程图:流程图:2 2、执行过程、执行过程2021-10-1445465.6 switch 5.6 switch 语句语句例如:例如:switch (a)switch (a) case 5: printf(&); case 5: printf(&); case 2: printf(#); case 2: printf(#); default:printf($); default:printf($); 当当a a等于等于5 5,输出:输出: int g; printf(Enter g:); printf(Enter g:); scanf(“%d”,&g); sca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 姚安县市级名校2026届中考冲刺预测卷(六)英语试题含解析
- 供应链协同管理流程模板整合版
- 人力资源流程管理工具集及操作指南
- 2026年多层集装箱房钢结构连接方案
- 2026年学前教育专业应届生职业目标与实现路径
- 2026年化学课堂教学思政元素融入案例
- 自愿跟岗协议书
- 餐饮服务双语·第二版课件 项目八 结账和送客服务
- 学校车辆管理制度模板
- 活动策划方案申请模板(3篇)
- 《小学奥数》小学六年级奥数讲义之精讲精练六年级奥数全部答案
- YS/T 1080-2015硫酸铯
- GB/T 28035-2011软件系统验收规范
- GB/T 19409-2003水源热泵机组
- GA 979-2012D类干粉灭火剂
- 小学科学《昼夜交替现象》优质课件-
- 人教八年级下册地理:北方地区复习课件
- 眼科学绪论-(第八版)课件
- 人教版六年级数学下册《三 第6课时 求不规则物体的体积》课堂教学课件PPT小学公开课
- 铁道概论全套课件
- DB32∕T 2920-2016 水生生物湿地类型划分
评论
0/150
提交评论