第4选择结构程序设计

上传人:痛*** 文档编号:185190172 上传时间:2023-02-03 格式:PPT 页数:43 大小:1.19MB
收藏 版权申诉 举报 下载
第4选择结构程序设计_第1页
第1页 / 共43页
第4选择结构程序设计_第2页
第2页 / 共43页
第4选择结构程序设计_第3页
第3页 / 共43页
资源描述:

《第4选择结构程序设计》由会员分享,可在线阅读,更多相关《第4选择结构程序设计(43页珍藏版)》请在装配图网上搜索。

1、2023-2-31第第4 4章章 选择结构程序设计选择结构程序设计 4.1 4.1 if if语句语句4.2 4.2 switchswitch语句语句C语言程序设计教程C语言程序设计教程 第4章 选择结构2023-2-32 C语言用三种语句控制程序的执行流程顺序结构、选择结构和循环结构。这一章主要讲选择结构。例如计算分段函数时,须先判断x是大于还是小于0的。这时就需要选择语句来判断。C语言程序设计教程 第4章 选择结构2023-2-334.1 if 语句语句例如计算分段函数计算 x0,如果结果为1:计算:y=3-x;否则,计算:y=2*x;需要根据x的值进行流程选择(分支)。C语言程序设计教程

2、 第4章 选择结构2023-2-34表达式语句真假4.1.1.单分支选择语句if (表达式)语句首先先判断表达式的值语句表达式若为非0则执行下面的语句若为0则跳过该语句。C语言程序设计教程 第4章 选择结构2023-2-35一般形式:i f (表达式)语句;main()float x,y;scanf(“%f”,&x);y=2*x;if(x 0)y=3-x;printf(“y=%6.2f”,y);C语言程序设计教程 第4章 选择结构2023-2-364.1.2.双分支选择语句 if (表达式)语句1 else 语句2首先先判断表达式的值若为非0则执行语句1。若为0则执行语句2。表达式语句1真假语

3、句2表达式语句1语句2C语言程序设计教程 第4章 选择结构2023-2-37if (表达式)语句1 else 语句2main()float x,y;scanf(“%f”,&x);if(x b 则输出a;否则,输出b。#include main()float a,b;scanf(“%f,%f”,&a,&b);if (ab)printf(“%f”,a);else printf(“%f”,b);C语言程序设计教程 第4章 选择结构2023-2-394.1.3.多分支选择语句 表达式1先判断表达式1的值真语句1非0就执行下面的语句假表达式2为0就执行下一个判断表达式3语句4语句3语句2真真假假一直这样

4、做下去直到得出最后结果C语言程序设计教程 第4章 选择结构2023-2-310多分支选择语句一般形式if (表达式)语句1 else if(表达式)语句2 else C语言程序设计教程 第4章 选择结构2023-2-311多分支问题:写一个程序完成下列功能:1 输入一个分数score 2 score60 输出 E 3 60=score 70 输出 D 4 75=score 80 输出 C 5 80=score 90 输出 B 5 90=score 输出 AC语言程序设计教程 第4章 选择结构2023-2-312main()int score;sanf(“%d”,&score);if(score

5、60)printf(“%c”,E);else if(score 70)printf(“%c”,D);else if(score 80)printf(“%c”,C);else if(score 90)printf(“%c”,B);else printf(“%c”,A);C语言程序设计教程 第4章 选择结构2023-2-3133种种if语句的说明:语句的说明:“表达式表达式”一般为逻辑或关系表达式,也可以为任和数值类型一般为逻辑或关系表达式,也可以为任和数值类型的表达式,非的表达式,非0为真,为真,0为假。为假。如:如:if(3)printf(“ok”););if(a)printf(“%d”,a)

6、;);都是合法的表达式,表达式类型为任意数据类型。都是合法的表达式,表达式类型为任意数据类型。2、3中形式中形式if语句中,每个语句中,每个else前有一分号,语句结束处有一分前有一分号,语句结束处有一分号,不能省略。号,不能省略。如:如:if(x)0)printf(“%f”,x););else printf(“%”,-x););在在if和和else后执行语句可以是一条简单语句、空语句或复合语句,后执行语句可以是一条简单语句、空语句或复合语句,也可以嵌套其它流程控制语句。也可以嵌套其它流程控制语句。如:如:if(a+ba&c+ab)s=0.5*(a+b+c);a r e a=s q r t(s

7、*(s-a)*(s-b)*(s-c);printf(“area=%6.2f”,area);else printf(“it is not a trilateral.”);C语言程序设计教程 第4章 选择结构2023-2-314复杂条件选择例问题:输入两个字符ch1和ch2,如果ch1=Z 且 ch2=B,则输出“You are right!“C语言程序设计教程 第4章 选择结构2023-2-315main()char ch1,ch2;ch1=getchar();ch2=getchar();if(ch1=Z&ch2=B )printf(“You are right!“);C语言程序设计教程 第4章

8、 选择结构2023-2-3164.1.4 if语句的嵌套1.在语句中嵌套if语句 在上述3种if语句结构中,当if(表达式)或else后面的语句本身又是一个if语句结构时,就形成了if语句的嵌套结构。例如多分支选择结构。C语言程序设计教程 第4章 选择结构2023-2-317if 语句的二层嵌套结构如下:if(表达式表达式1)if(表达式1_2)语句1_1 else 语句1_2 else if(表达式2_1)语句2_1 else 语句2_2C语言程序设计教程 第4章 选择结构2023-2-318例:分段函数可以用两层嵌套来完成:if (x=0)if (x=-10)/*当 x =-10 */y=

9、2*x;else /*当-10 x 0 时走这条分支*/if(x=10)/*当 0 x =1 0 */y=x-2;else /*当 10 x */y=x/10;2023-2-319两层嵌套流程图x=-10 x=0 x=10y=2*xy=x+2y=x-2y=x/10非000非00非02023-2-320注意结构if (x=0)if (x=-10)/*当 x =-10 */y=2*x;else /*当-10 x 0 时走这条分支*/if(x=10)/*当 0 x =1 0 */y=x-2;else /*当 10 x */y=x/10;添加花括号后可以很清楚地表示出else 与外层if的配对情况。2

10、023-2-321 分析程序的执行结果分析程序的执行结果(s3-1.c)#includemain()int a,b,c,d,x;a=c=0;b=1;d=20;if(a)d=d-10;else if(!b)if(!c)x=15;else x=25;printf(“d=%dn”,d);2023-2-322 以 下 程 序 在 输 入以 下 程 序 在 输 入 5,2 之 后 的 执 行 结 果 是之 后 的 执 行 结 果 是_(s3-2.c)#includemain()int s,t,a,b;scanf(“%d,%d”,&a,&b);s=1;t=1;if(a0)s=s+1;if(ab)t=s+t

11、;else if(a=b)t=5;else t=2*s;printf(“s=%d,t=%dn”,s,t);C语言程序设计教程 第4章 选择结构2023-2-323例:编程实现:根据两个数例:编程实现:根据两个数sex和和tall分类分类,如果如果sex为为F,当,当tall大于等于大于等于150时,时,输出输出”A“,否则输出,否则输出“B“;若;若sex不不为为F,当当tall大于等于大于等于170时,输出时,输出A,否则输出否则输出B。分析:分析:根据根据sex分支分支 在在sex为为F的分支中判断的分支中判断tall=150否否 在在sex不为不为F的分支中判断的分支中判断tall=17

12、0否否C语言程序设计教程 第4章 选择结构2023-2-324 void main()int tall;char sex;printf(“input sex and tall:”);scanf(“%c%d”,&sex,&tall);if (sex=F)if (tall=150)printf(“A”);else printf(“B”);else if (tall=170)printf(“A”);else printf(“B”);C语言程序设计教程 第4章 选择结构2023-2-325 练习:练习:1、有下列条件语句:、有下列条件语句:if(ab)if(cd)x=1;else if(ac)if(b

13、,d)x=2;else x=3;else if(ad)if(bc)x=4;else x=5;else x=6;else x=7;写出配对关系写出配对关系C语言程序设计教程 第4章 选择结构2023-2-326if(ab)if(cd)x=1;else if(ac)if(bd)x=2;else x=3;else if(ad)if(bc)x=4;else x=5;else x=6;else x=7;解答:解答:C语言程序设计教程 第4章 选择结构2023-2-327 2、写出下面程序的执行结果。、写出下面程序的执行结果。main()int x,y=1,z;if(y!=0)x=5;printf(“x=

14、%dt”,x);if(!y)x=3;else x=5;printf(“x=%dn”,x);x=1;if(z0)x=3;else x=5;printf(“x=%dtn”,x);if(z=y0)x=3);else if(y=0)x=5;else x=7;printf(“x=%dt”,x);printf(“z=%dtn”,z);if(x=y=z)x=3;printf(“x=%dt”,x);printf(“z=%dtn”,z);C语言程序设计教程 第4章 选择结构2023-2-328综合练习综合练习 1、说明下列程序的功能。、说明下列程序的功能。#include main()int c;printf(

15、“input acharacter:”);c=getchar()if(c=a&c=z)c+=A-a;putchar(c);putchar(n);C语言程序设计教程 第4章 选择结构2023-2-3292、编程:、编程:从键盘输入任意三个整数,按照从大到小从键盘输入任意三个整数,按照从大到小次序输出。次序输出。C语言程序设计教程 第4章 选择结构2023-2-330#include main()int a,b,c,temp;scanf(“%d%d%d”,&a,&b,&c);if(ab)temp=a;a=b;b=temp;if(ac)temp=a;a=c;b=temp;if(bc)temp=b;b

16、=c;c=temp;printf(“%d,%d,%dn”,a,b,c);解答:解答:C语言程序设计教程 第4章 选择结构2023-2-3314.2 Switch语句语句switch(表达式表达式)case 常量常量1:语句语句1;case 常量常量2:语句语句2;case 常量常量3:语句语句3;default:语句语句4;另一种多分支语句,根据表达式不同的值选另一种多分支语句,根据表达式不同的值选择不同的语句。择不同的语句。C语言程序设计教程 第4章 选择结构2023-2-332注意:语句中的表达式可以是数字型或字符型,表达语句中的表达式可以是数字型或字符型,表达式的值,称为开关值。式的值,

17、称为开关值。语句结构中各个语句结构中各个case后常量表达式的值必须互后常量表达式的值必须互不相同;否则执行时将出现矛盾,即同一个开不相同;否则执行时将出现矛盾,即同一个开关值,对应多种执行方案。关值,对应多种执行方案。当表达式的值与某一个常量相等时,就执行后当表达式的值与某一个常量相等时,就执行后面的语句;若无面的语句;若无break语句,执行该语句后,语句,执行该语句后,流程控制转移到下一个分支流程控制转移到下一个分支:继续执行这一个继续执行这一个分支的语句,一至到最后下个语句执行完。分支的语句,一至到最后下个语句执行完。当表达式的值与所有常量表达式的值不相等时,当表达式的值与所有常量表达

18、式的值不相等时,执行执行default:后面的语句。后面的语句。C语言程序设计教程 第4章 选择结构2023-2-333switch(i)case 1:printf(An);case 2:printf(Bn);case 3:printf(Cn);case 4:printf(Dn);default:printf(En);看下面的例子:假设假设i=3时,则会从时,则会从i=3时时做起的语句。做起的语句。运行结果为:CDE如果给每条语句加上如果给每条语句加上break;break;break;break;break;这样就只执行一条语这样就只执行一条语句句语句后加或不加语句后加或不加“breakbr

19、eak;”可以使多分支变得非常灵活。如果多种可以使多分支变得非常灵活。如果多种情况需要共用一个执行语句情况需要共用一个执行语句,可用可用casecase的常量表达式多种情况列出的常量表达式多种情况列出,最后一种情况后最后一种情况后,才放执行的语句。才放执行的语句。C语言程序设计教程 第4章 选择结构2023-2-334case后面的语句可以是一条语句,也可后面的语句可以是一条语句,也可以是复合语句,还可以是花括弧括起来以是复合语句,还可以是花括弧括起来的几条语句,还可以是空语句。的几条语句,还可以是空语句。有多条语句时会顺序执行完所有语句。有多条语句时会顺序执行完所有语句。C语言程序设计教程

20、第4章 选择结构2023-2-335 以下程序的执行结果是以下程序的执行结果是_(s3-3.c)#include main()int x=1,y=0;switch(x)case 1:switch(y)case 0:printf(“firstn”);break;case 1:printf(“secondn”);break;case 2:printf(“thirdn”);C语言程序设计教程 第4章 选择结构2023-2-336例例4.6 编程:根据输入的学生的成绩判断等级。当成绩编程:根据输入的学生的成绩判断等级。当成绩score 90时为时为 A等等;成绩成绩70score 90 为为B等等;成

21、成绩绩60score 70 为为C等等;成绩成绩score 60 为为D等等(score 为整数为整数)。分析:分析:设设score为整型数,在为整型数,在score90 的范围内,的范围内,score可能取可能取100,99,.,90,利用两个整数相除,利用两个整数相除,结果自动取整的特性,结果自动取整的特性,score和和 score/10 有如下对有如下对应关系:应关系:score score/10 90 10,9 7089 7,8 6069 6 60以下以下 default 因此因此,可以用可以用score/10的值来确定分支。的值来确定分支。C语言程序设计教程 第4章 选择结构202

22、3-2-337#include main()/*用用switch 语句评级语句评级 */int score;scanf(%d,&score);switch(score/10)case 10:case 9:printf(%d:An,score);break;case 8:printf(%d:Bn,score);break;case 7:printf(%d:Cn,score);break;case 6:printf(%d:Dn,score);break;default:printf(%d:En,score);C语言程序设计教程 第4章 选择结构2023-2-338 写程序:输入一整数,输出它是奇数

23、还写程序:输入一整数,输出它是奇数还是偶数;是偶数;(s3-4.c)s3-4.c)提示:若除的余数为则输出偶数,否提示:若除的余数为则输出偶数,否则输出奇数;则输出奇数;C语言程序设计教程 第4章 选择结构2023-2-339 写程序:输出写程序:输出3 3个输入数的最大数;个输入数的最大数;(s3-5.c)s3-5.c)提示:用提示:用scanfscanf函数输入函数输入3 3个变量,用选择个变量,用选择语句比较后用语句比较后用printfprintf将结果输出将结果输出C语言程序设计教程 第4章 选择结构2023-2-340编写一个程序将用户输入的字母进行大小编写一个程序将用户输入的字母进

24、行大小写转换。写转换。(s3-6.c)s3-6.c)提示:大小写对应的提示:大小写对应的ASCIIASCII相差相差3232。接收一。接收一个字符,判断是否大小写,再进行相应个字符,判断是否大小写,再进行相应转换。转换。C语言程序设计教程 第4章 选择结构2023-2-341有一函数:有一函数:(s3-7.c)s3-7.c)x (x (5x0)5x0)y=xy=x1 (x=0)1 (x=0)x x1 (0 x10)1 (0 x10)编写程序:要求输入编写程序:要求输入x x,输出输出y y。C语言程序设计教程 第4章 选择结构2023-2-342编写程序,输入一个学生的生日(年编写程序,输入一

25、个学生的生日(年,月月,日:日:y1,m1,d1y1,m1,d1););并输入当前的日期并输入当前的日期(年(年,月月,日:日:y2,m2,d2y2,m2,d2););输出该生的输出该生的实足年龄。实足年龄。(s3-8.c)s3-8.c)提示:因为每月的天数不等,所以只要求提示:因为每月的天数不等,所以只要求精确到年月。可设定实足年龄为精确到年月。可设定实足年龄为y3y3岁零岁零m3m3个月。个月。参考算法:参考算法:y3=y2-y1;m3=m2-m1;y3=y2-y1;m3=m2-m1;if(m30)y3-;m3=12-abs(m3);if(m30)y3-;m3=12-abs(m3);C语言程序设计教程 第4章 选择结构2023-2-343

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!