教学内容if语句switch语句选择结构程序举例ppt课件

上传人:hs****ma 文档编号:589899352 上传时间:2024-09-12 格式:PPT 页数:37 大小:147KB
返回 下载 相关 举报
教学内容if语句switch语句选择结构程序举例ppt课件_第1页
第1页 / 共37页
教学内容if语句switch语句选择结构程序举例ppt课件_第2页
第2页 / 共37页
教学内容if语句switch语句选择结构程序举例ppt课件_第3页
第3页 / 共37页
教学内容if语句switch语句选择结构程序举例ppt课件_第4页
第4页 / 共37页
教学内容if语句switch语句选择结构程序举例ppt课件_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《教学内容if语句switch语句选择结构程序举例ppt课件》由会员分享,可在线阅读,更多相关《教学内容if语句switch语句选择结构程序举例ppt课件(37页珍藏版)》请在金锄头文库上搜索。

1、 教学内容:教学内容: 6.1 if 6.1 if 语句语句 6.2 switch 6.2 switch 语句语句 6.3 6.3 选择构造程序举例选择构造程序举例 教学要求:教学要求: 1 1掌握掌握ifif语句的语法和运用方法。语句的语法和运用方法。 2 2掌握掌握switchswitch语句的语法和运用方法。语句的语法和运用方法。 3 3掌握分支语句的嵌套运用方法。掌握分支语句的嵌套运用方法。第第6 6章章 选择构造程序设计选择构造程序设计例如,某一例如,某一单位要位要给职工添加工工添加工资,它的,它的规定是:工定是:工资低于低于1000元的元的职工,每人添加工工,每人添加工资100元,

2、超越元,超越1000元的元的职工工暂不添加工不添加工资。选择条件:条件: 工工资低于低于1000元元吗数据数据处置:置: 是是 添加工添加工资100元,元, 否那么不添加工否那么不添加工资假假设,添加工,添加工资的的规定是:工定是:工资低于低于1000元的元的职工,工,每人添加工每人添加工资200元,超越元,超越1000元的元的职工添加工工添加工资100元。元。选择条件:工条件:工资低于低于1000元元吗数据数据处置:置: 是是 添加工添加工资200元元 否那么否那么 添加工添加工资100元元 在在C言语中,当需求根据选择条件来确定所言语中,当需求根据选择条件来确定所要做执行哪一项数据处置的情

3、况,这样的程要做执行哪一项数据处置的情况,这样的程序构造,被称为选择分支构造。序构造,被称为选择分支构造。 在在C言语中表示选择条件,普通用:言语中表示选择条件,普通用: 关系表达式、逻辑表达式关系表达式、逻辑表达式 二二 、实现选择构造用什么语句、实现选择构造用什么语句: C言语中实现选择构造所用语句:言语中实现选择构造所用语句: if 语句语句 switch 语句语句 在在C言语中,设计选择分支构造程序言语中,设计选择分支构造程序要处理的问题:要处理的问题: 一一 、如何表示选择条件:、如何表示选择条件: 1. 第一种方式第一种方式 1语句格式:句格式: if(表达式表达式) 语句句 语句

4、中的表达式必需用句中的表达式必需用单括号括号 “( 和和 “ )括括起来。表达式后面起来。表达式后面语句也可运用复合句也可运用复合语句。句。 2语句功能:假句功能:假设表达式的表达式的值为真真(T),那么,那么执行其后的行其后的语句,句, 否那么不否那么不执行行该语句。句。 在在C言言语中,没有中,没有逻辑型数据型数据类型。当表达式的型。当表达式的值为任何非零任何非零值,表示表达式的条件成立;当表,表示表达式的条件成立;当表达式的达式的值为零零值,表示表达式的条件不成立。,表示表达式的条件不成立。 6.1 if 语语 句句 2. 第二种方式第二种方式 (1)语句格式:语句格式: if(表达式表

5、达式) 语句语句1; else 语句语句2;阐明:阐明:else子句可选是子句可选是 if 语句的一部分,必语句的一部分,必需与需与 if 配对运用,不能单独运用配对运用,不能单独运用 (2)语句功能:假设表达式的值为真语句功能:假设表达式的值为真(T),那么,那么执行语句执行语句1,否那么执行语句,否那么执行语句2 。 。例例6.1 6.1 输入两个整数,输出其中的大数。输入两个整数,输出其中的大数。void main()void main() int a,b,max; int a,b,max; printf(n input two numbers: ); printf(n input tw

6、o numbers: ); scanf(%d%d,&a,&b); scanf(%d%d,&a,&b); max=a; max=a; if (bmax) max=b; if (bmax) max=b; printf(max=%d,max); printf(max=%d,max); 例例6.2 6.2 输入两个整数,输出其中的大数。输入两个整数,输出其中的大数。main()main() int a, b; int a, b; printf(input two numbers: ); printf(input two numbers: ); scanf(%d%d,&a,&b); scanf(%d%d

7、,&a,&b); if(ab) if(ab) printf(max=%dn,a); printf(max=%dn,a); else else printf(max=%dn,b); printf(max=%dn,b); 例例6.3从键盘输入两个数,按升序输出两个数从键盘输入两个数,按升序输出两个数 #include main() float a, b, t; scanf(%f,%f,&a,&b); if (ab) t=a; a=b; b=t; printf( %5.2f,%5.2fn,a ,b); 例例6.4 输入恣意三个数,按从小到大的顺序排序输出。输入恣意三个数,按从小到大的顺序排序输出。

8、main() int a, b, c, temp; printf(Please input three numbers:); scanf(%d,%d,%d,&a,&b,&c); if (ab) temp=a; a=b; b=temp; if (bc) temp=b; b=c; c=temp; if (ab) temp=a; a=b; c=temp; printf(Three nbers after sorted:); printf(%d,%d,%dn,a,b,c); 3条并列单条并列单 分支语句分支语句 3. 第三种方式第三种方式 (1) 语句格式 if (表达式1) 语句组1 else if

9、 (表达式2) 语句组2 else if (表达式3) 语句组3 else if (表达式4) 语句组4 else 语句组5 假设 语句组5 又是一条 if 语句,整个语句最少是一个6个分支的多分支 if 语句。 2多分支 if 语句的执行过程 当“表达式1的值不等于0时,那么执行语句组1 ,然后转向下一条语句; 否那么,当“表达式2的值不等于0时,执行语句组2,转向下一条语句; 再否那么,当“表达式3的值不等于0时,执行语句组3,转向下一条语句; 再否那么,当“表达式4的值不等于0时,执行语句组4,转向下一条语句; 再否那么,执行语句组5,转向下一条语句; 4. if语句阐明语句阐明 (1)

10、 在三种方式的在三种方式的if语句中,条件表达式通常是逻辑表达语句中,条件表达式通常是逻辑表达式或关系表达式,式或关系表达式, 但也可以是其它表达式,如赋值表达但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。式等,甚至也可以是一个变量。 (2) 在在if语句的三种方式中,一切的语句应为单个语句,语句的三种方式中,一切的语句应为单个语句,假设要想在满足条件时执行一组假设要想在满足条件时执行一组(多个多个)语句,那么必需把语句,那么必需把这一组语句用这一组语句用 括起来组成一个复合语句。但要留意的括起来组成一个复合语句。但要留意的是在是在之后不能再加分号。之后不能再加分号。 例例 6.

11、5 输入输入 + * - / , 输出对应的单词。输出对应的单词。 #include main() char ch ; ch=getchar();if (ch=+) printf(plusn); else if (ch=-) printf(minusn); else if(ch=*) printf(multiplyn); else if (ch=/) printf(dividen); else printf(errorn); 例例6.6 输入恣意三个整数,求三个数中的最大入恣意三个整数,求三个数中的最大值。 main() int n1,n2,n3,max; scanf(%d,%d,%d,&n1

12、,&n2,&n3); if (n1n2) max=n1; else max=n2; if (n3max) max=n3; printf(The three numbers are:; printf(“%d,%d,%dn,n1,n2,n3); printf(max=%dn,max); max=n1;if (n2max) max=n2;程序运程序运转情况如下:情况如下: Please input three nbers:11,22,18 The three nbers are:11,22,18 max=22本例中的第本例中的第1个个if语句,可句,可优化化为如下不如下不带else子句的子句的方式:

13、方式: max=n1; if (n2max) max=n2;优化的根本思想是:化的根本思想是:首先取一个数首先取一个数预置置为max最大最大值,然后再用,然后再用max依次与其他的数逐个比依次与其他的数逐个比较,假,假设发现有比有比max大的,就用大的,就用它它给max重新重新赋值,比,比较完一切的数后,完一切的数后,max中的数就是中的数就是最大最大值。 5. if 语句与条件运算符句与条件运算符 假假设在条件在条件语句中,只句中,只执行行单个的个的赋值语句句时, 常可运用条常可运用条件表达式来件表达式来实现。不但使程序。不但使程序简约,也提高了运,也提高了运转效率。效率。例例 6.7 输入

14、恣意三个整数,求三个数中的最大入恣意三个整数,求三个数中的最大值。 main() int n1,n2,n3,max; scanf(%d,%d,%d,&n1,&n2,&n3); max= n1n2 ? n1: n2; max= (n3max) ? n3: max ; printf(max=%dn,max); max= ( n1n2 ) ? (n1n3 ) ? n1 : n3):(n2n3 ) ? n2 : n3); 6if语句的嵌套与嵌套匹配原那么句的嵌套与嵌套匹配原那么 (1)if 语句嵌套,是指,在句嵌套,是指,在“语句句1或和或和“语句句2中,又包含有中,又包含有 if 语句的情况。句的情

15、况。 if 语句嵌套句嵌套时,else子句与在它上面、距它最近、子句与在它上面、距它最近、且尚未匹配的且尚未匹配的 if 配配对。例如:。例如: if (ab) s=s+t; else if (a= =b) t=5; /* 语句句2是是 if 语句句*/ else t=2*s;例例 6.8 输入恣意三个整数,求三个数中的最大值。输入恣意三个整数,求三个数中的最大值。 main() int n1,n2,n3 ; scanf(%d,%d,%d,&n1,&n2,&n3); if (n1n2) if (n1n3) printf(max=%dn, n1); else printf(max=%dn, n3

16、); else if (n2 n3) printf(max=%dn, n2); else printf(max=%dn, n3); 例例6.9 if 语句的嵌套运用句的嵌套运用 main() int a, b, c, d, x; a=b=c=0; d=20; if ( a ) d=d-10; else if ( d+2 ) if (!c) x=15; else x=25; printf(“d=%d,x=%dn,d,x) 阐明明1if后后面面的的“表表达达式式,除除常常见的的关关系系表表达达式式或或逻辑表表达达式式外外,也也允允许是是其其它它类型型的的表表达达式式,其其数数值可可以以是是整整型型

17、、实型型、字符型。字符型。 1switch语句的普通方式句的普通方式 switch (表达式表达式) case 常量表达式常量表达式1: 语句句组1 case 常量表达式常量表达式2: 语句句组2 . case 常量表达式:常量表达式: 语句句组n default:语句句组n+1 “表表达达式式 可可以以是是int、char和和枚枚举型型中中的的一一种种,每每个个case后后面面“常常量量表表达达式式的的值,必必需需各各不不一一样,多个多个case子句,可共用同一子句,可共用同一语句句组。 6.2 switch 语句句 2执行过程1当switch后面“表达式的值,与某个case后面的“常量表达

18、式的值一样时,就执行该case后面的语句组; 2假设没有任何一个case后面的“常量表达式的值,与“表达式的值匹配,那么执行default 后面的语句,然后,再执行switch语句的下一条。case后面的常量表达式仅起语句标号作用,并不进展条件判别。系一致旦找到入口标号,就从此标号开场执行,不再进展标号判别; 3.switch 语句运用阐明 1在case后的各常量表达式的值不能一样,否那么会出现错误。 2在case后,允许有多个语句,可以不用 括起来。 3各case和default子句的先后顺序可以变动,而不会影响程序执行结果。 4default子句可以省略不用。 5多个case子句,可共用同

19、一语句组。 例例6.10 6.10 输出出变量量a a的的值main()main() int a=0, i=1; int a=0, i=1; switch( i ) switch( i ) case 0: case 0: case 1: a+=2; case 1: a+=2; case 2: case 2: case 3: a+=3; case 3: a+=3; default: a+=7; default: a+=7; printf(“%dn printf(“%dn,a); ,a); 2 2个个casecase子句,子句,共用同一语句共用同一语句组组 执行顺序:执行顺序: a+=2; a+=

20、3; a+=7; 4switch语句中句中break语句运用句运用 switch (表达式表达式) case 常量表达式常量表达式1:语句句组1;break; case 常量表达式常量表达式2:语句句组2;break; . case 常量表达式:常量表达式:语句句组n;break; default:语句句组n+1; 执行行过程程 当当switch后后面面“表表达达式式的的值,与与某某个个case后后面面的的“常常量量表表达达式式的的值一一样时,就就执行行该case后后面面的的语句句组;当当执行行到到break语句句时,跳跳出出switch语句,句,转向向执行行switch语句的下一条。句的下一

21、条。例例6.11 从从键盘上上输入一个百分制成果入一个百分制成果score,按,按以下原那么以下原那么输出其等出其等级: score90, 等等级为A; 80score90, 等等级为B; 70score80, 等等级为C; 60score70, 等等级为D; score0) case 1: switch(b0) case 0: printf(“); break; case 1: printf(“!); break; case 0: switch(c= =5) case 0: printf(“*); break; case 1: printf(“#); break; default: prin

22、tf(“$); break; default: printf(“&); 例 6.13 计算阶跃函数 y 的值 #include main( ) float x,y;printf ( input x:“ );scanf ( %f , &x );if ( x=0 ) if( x0 ) y = 1; /* 语句组1是if语句*/ else y = 0; else y = - 1;printf ( y=%4.0fn, y ); 当当 X0 y=1 X=0 y= 0 X0 y= -1 6.3 6.3 选择构造程序举例选择构造程序举例例例6.14 求一元二次方程求一元二次方程ax2+bx+c=0的解的解a

23、0。#include math.hmain()float a, b, c, disc, x1, x2, p, q; scanf(“%f,%f,%f, &a, &b, &c); disc=b*b-4*a*c; if (fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a); /*两个不相等两个不相等实根根*/ x2=(-b-sqrt(disc)/(2*a); printf(x1=%7.2f,x2=%7.2fn, x1, x2); else p=-b/(2*a);/*求出两个共轭复根*/ q=sqrt(fabs(disc)/(2*a); /*输出两个共轭复根*/ print

24、f(“x1=%7.2f + %7.2f in“, p, q); printf(x2=%7.2f - %7.2f in“, p, q); 本案例判别disc能否为0的方法是:判别disc的绝对值能否小于一个很小的数:1e-6 #include main() float a,b,c,s,x1,x2; double t;scanf(%f%f%f,&a,&b,&c);if(a=0.0) if(b!=0.0) printf(the root is :%fn,-c/b); else if (c=0.0) printf(x is inexactiven ); else printf(no root!n);e

25、lse s=b*b-4*a*c; if (s=0.0) if (s0.0) t=sqrt(s); x1=-0.5*(b+t)/a; x2=-0.5*(b-t)/a; printf(There are two different roots:%f and%fn ,x1,x2); else printf(There are two equal roots:%fn,-0.5*b/a); else t=sqrt(-s); x1=-0.5*b/a; x2=abs(0.5*t/a); printf(There are two virtual roots:); printf(%f+i%ftt%f-i%fn,

26、x1,x2,x1,x2 ); 例6.15 知某公司员工的保底薪水为500,某月所接工程的利润profit整数与利润提成的关系如下计量单位:元: profit1000没有提成;1000profit2000 提成 10%;2000profit5000 提成 15%;5000profit10000提成 20%;10000profit提成 25%。 算法设计要点: 提成的变化点都是1000的整数倍1000、2000、5000、,假设将利润profit整除1000,那么当: profit1000 对应 0、11000profit2000 对应 1、22000profit5000 对应 2、3、4、550

27、00profit10000 对应 5、6、7、8、9、1010000profit 对应 10、11、12、 为处理相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1最小增量,然后再整除1000即可: profit1000对应0 1000profit2000对应1 2000profit5000对应2、3、4 5000profit10000 对应5、6、7、8、9 10000 profit对 应 10、 11、 12、main() long profit; int grade; float salary=500; printf(Input profit: ); scanf(%ld,

28、&profit); grade= (profit 1) / 1000;switch(grade) case 0: break;/*profit1000 */ case 1: salary += profit*0.1; break; case 2: case 3: case 4: salary += profit*0.15; break; case 5: case 6: case 7: case 8: case 9: salary += profit*0.2; break; default: salary += profit*0.25; printf(salary=%.2fn, salary);

29、 例6.16 运输费用的计算#include #include main() int c, s; float p, w, d, f; printf(please input p,w,s:); scanf(%f,%f,%d,&p,&w,&s); if (s=3000) c=12; else c=s/250; switch (c) case 0: d=0;break; case 1: d=2;break; case 2: case 3: d=5;break; s: 路程路程 w: 货物分量货物分量 p:运价运价 d: 折扣率折扣率 f: 总运费总运费case 4:case 5:case 6:case 7:d=8;break;case 8:case 9:case 10:case 11:d=10;break; case 12:d=15;break; f=p*w*s*(1-d/100)printf(Total freight is:%10.2fn,f); 同同 学学 们们 再再 见见 程程 序序 设 计 基基 础

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号