《第四章选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第四章选择结构程序设计.ppt(55页珍藏版)》请在第壹文秘上搜索。
1、第四章第四章 选择结构程序设计选择结构程序设计2023年3月30日19时21分选择结构程序概述选择结构程序概述n选择结构程序,又称为分支结构程序。它是三大基本结构之一。选择结构程序,又称为分支结构程序。它是三大基本结构之一。n在这种结构程序中,一定会包含在这种结构程序中,一定会包含条件语句条件语句。计算机根据所指定条件是。计算机根据所指定条件是否满足,决定从给定的两组或多组操作中选择执行。否满足,决定从给定的两组或多组操作中选择执行。2023年3月30日19时21分条件选择控制语句条件选择控制语句nif语句语句 (else 语句语句)nswitch语句语句ngoto语句语句2023年3月30日
2、19时21分条件表达式条件表达式 关系与逻辑运算操作符关系与逻辑运算操作符 关系运算符关系运算符 = = ! = = 逻辑运算符逻辑运算符 ! & |2023年3月30日19时21分条件选择控制语句条件选择控制语句1、if 语句语句(单分支语句单分支语句)条件条件选择体选择体NY if (条件表达式条件表达式) 语句语句; if (条件表达式条件表达式) 语句块语句块 或或 2023年3月30日19时21分例如例如: : (1)(1) 如果如果x0, x0, 输出输出x x。 (2)(2) ifif(x0 x0) printf printf(x=%f, xx=%f, x); ; (3)(3)
3、(2) (2) 如果如果a a等于等于b, b, 输出输出a=ba=b。 ifif(a= =ba= =b) printf printf(%s, a=b%s, a=b); ;2023年3月30日19时21分例如例如: : 如果如果x0, x0, 求求x x的平方根。的平方根。 (1) (1) 将结果放入变量将结果放入变量y y 中中; ; (2) (2) 输出输出x x的平方根的平方根y y。 不管选择体多么复杂不管选择体多么复杂, , 包含多少条语句包含多少条语句, , ifif语句逻辑上是一语句逻辑上是一条语句条语句, , 后面的双分支后面的双分支ifif语句、语句、 多分支多分支ifif语
4、句、语句、 switchswitch语句、语句、 循环语句均是逻辑上的一条语句。循环语句均是逻辑上的一条语句。if (x0) y=sqrt(x); printf(平方根平方根=%f, y); 2023年3月30日19时21分计算计算y, y, ( 提示提示: : x x等于等于1 1时,函数无定义。)时,函数无定义。)11xxy#includevoid main( ) float x, y; printf(请输入请输入x: ); scanf(%f, &x); if (x!=1) y=(x+1)/(x -1); printf(x=%6.2f, y=%6.2fn, x, y); 例例1:1:请输入
5、请输入x: 1.2 运行结果为运行结果为: x= 1.20, y= 11.00 2023年3月30日19时21分2、 if - else 语句语句(Two-way selection statement)例:例: #include void main( ) int x; scanf(“%d”,&x); if (x=0) printf(“x 0”); 条件条件语句语句1NY语句语句2if(条件表达式条件表达式) 语句语句1; (语句块(语句块1) else 语句语句2;(语句块;(语句块2)2023年3月30日19时21分例:例: 求两个数求两个数x、 y的最大值的最大值max。用条件表达式表示
6、为:用条件表达式表示为:(xy)?(max=x) : (max=y);用条件表达式表示为:用条件表达式表示为: (i%2= =0)? Printf(“偶数偶数n”) : printf(“奇数奇数n”);if (xy) max=x; else max=y; 例:例: 判断整数判断整数i 的奇偶性。的奇偶性。 if (i%2= =0) printf(偶数偶数n); else printf(奇数奇数n);2023年3月30日19时21分说明:说明: (1) 双分支双分支if语句形式上相当于单分支语句形式上相当于单分支if语句扩展语句扩展else分支而来分支而来, else分支称为分支称为else子句
7、子句, else子句不能单独存在子句不能单独存在。 (2) 在其它高级语言中特别强调在其它高级语言中特别强调else子句前不能有分号子句前不能有分号, C语言中语言中else子句前必有分号。子句前必有分号。 (3) 选择体如为多条语句同样必须采用选择体如为多条语句同样必须采用复合语句复合语句。 2023年3月30日19时21分例例2 2 :n#includenvoid main( ) float x, y; printf(请输入请输入x: ); scanf(%f, &x); if (x=1) y=x+1; else y=x- 1; printf(x=%6.2f, y=%6.2fn, x, y)
8、; (x=1)?)?(y=x+1) : (y=x-1);计算计算y y的值:的值: =1111,xxxxyy y, max=x, min=y 如果如果xy, max=y, min=x 输出最大值输出最大值max、 最小值最小值min 例例3 3 :2023年3月30日19时21分n#includenvoid main( ) float x, y; float max, min; printf(请输入两个数请输入两个数x, y: ); scanf(%f, %f, &x, &y); if (xy) max=x; min=y; else max=y; min=x; printf(max=%6.2f,
9、 min=%6.2fn, max, min); 请输入两个数请输入两个数x, y: 1.2, 2.54运行结果运行结果: max= 2.54, min= 1.20 2023年3月30日19时21分n#includenvoid main( ) float x, y; printf(请输入两个数请输入两个数x, y: ); scanf(%f, %f, &x, &y); if (xy) printf(max=%6.2f, min=%6.2fn, x,y); else printf(max=%6.2f, min=%6.2fn, y, x); 请输入两个数请输入两个数x, y: : 1.2, 2.54
10、运行结果运行结果: max= 2.54, min= 1.20 2023年3月30日19时21分If语句的嵌套语句的嵌套格式:格式: 在在if语句中又包含一个或多个语句中又包含一个或多个if语句称为语句称为if语句的嵌套。语句的嵌套。 if( ) if( ) 语句语句1 else 语句语句2 else 语句语句3 if( ) 语句语句1else if( ) 语句语句2 else 语句语句3 if( ) if( ) 语句语句1 else 语句语句2 else if( ) 语句语句3 else 语句语句42023年3月30日19时21分注意:注意:if与与else的配对关系的配对关系if () if
11、 ( ) 语句语句1 else if( ) 语句语句2 else 语句语句3这种表达与原意不符:这种表达与原意不符: else总是与上边最近的总是与上边最近的if配对配对,因此,把,因此,把“if ()语句语句1”加加上上“ ”才能实现原意,即才能实现原意,即 if () 语句语句1 。2023年3月30日19时21分程序段程序段1: int x = 20; if ( x = 0) if ( x =0 且且 x=0 且且 x=50*/分析下面两个程序段的输出结果分析下面两个程序段的输出结果程序段程序段2: int x = 20; if ( x = 0) if ( x 50) /*该该 if 不
12、可见不可见*/ printf(“ x is okn”); else printf(“ x is not okn”);2023年3月30日19时21分n#includenvoid main( ) float x; float y; printf(请输入请输入x: ); scanf(%f, &x); if (x0) y=-1; else if (x=0) y=0; else y=1; printf(x=%8.4f, y=%5.2fn, x, y); 011y000 xxx例例4 4 :计算计算y y的值:的值: 2023年3月30日19时21分例例5 5 将百分制成绩转成五级记分(将百分制成绩转成
13、五级记分(A A、 B B、 C C、 D D、E E)。)。if (cj=90) ch=A; else if (cj=80) ch=B; else if (cj=70) ch=C; else if (cj=60) ch=D; else ch=E; 表达式表达式1语句语句1NY语句语句2表达式表达式2表达式表达式3语句语句3语句语句4NNYY2023年3月30日19时21分多分支多分支ifif语句可用多条单分支、语句可用多条单分支、 双分支双分支if if 语句等价实现。语句等价实现。例如例如: 例例 4 用单分支用单分支if语句处理:语句处理: if (x0) y=1; 例例 5 用单分支用
14、单分支if语句处理语句处理: if (cj=90) ch=A; if (cj=80&cj=70&cj=60&cj70) ch=D; if (cj=90&grade=80&grade=70&grade=60&grade70)n printf(“Dn ”); n else n printf(“En ”);2023年3月30日19时21分#include void main() char grade; int score; printf(“please input a score:”); scanf(“%d”,&score) ; switch(score/10) case 10: case 9: g
15、rade=A;break; case 8: grade=B;break ; case 7: grade=C;break ; case 6: grade=D;break; default: grade=E ; printf(成绩=%d,等级=%cn,score, grade) ;例例6: 根据分数给出考试成绩的等级根据分数给出考试成绩的等级2023年3月30日19时21分例例7:根据考试成绩的等级输出百分制分数段。:根据考试成绩的等级输出百分制分数段。 #includevoid main( ) char grade; scanf(“%c”,&grade); switch (grade) case
16、 A:printf(“90-100n”); break; case B: printf(“75-89n”); break; case C: printf(“60-74n”); break; case D: printf(“60n”); break; default: printf(“errorn”); /最后可省略最后可省略break 2023年3月30日19时21分 t-Turbo C b-Borland C m-Microsoft C v-Visual C 例例 8 根据输入的字符根据输入的字符, 输出相应的字符串。输出相应的字符串。 #includevoid main( ) char ch; scanf(%c, &ch); switch (ch) case t: printf(Turbo Cn); break; case b: printf(Borland Cn); break; casem: printf(Microsoft Cn); break; case v: printf(Visual Cn); break; default: printf(error Cn); 2023