《C程序设计选择结构程序设计.pptx》由会员分享,可在线阅读,更多相关《C程序设计选择结构程序设计.pptx(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、4.1引言输出两个数中的较大值?#include int main()int a,b;scanf(“%d%d”,&a,&b);printf(“%d”,xxx);return 0;第1页/共33页4.2 关系运算符和关系表达式1、关系运算符 、=、=、!=2、关系表达式 用关系运算符连接起来的式子。53、5=3、53、5b)printf(“The bigger is a=%dn”,a);else printf(“The bigger is b=%dn”,b);常用“”表示“a大于b”这样的条件:条件成立时,ab为非零,执行受if控制的语句;条件不成立时,ab为零,执行受else控制的语句;第8页
2、/共33页 int a,b;scanf(“%d%d”,&a,&b);if(ab)printf(“The bigger is b=%dn”,a);else printf(“The bigger is a=%dn”,a);常用“”表示“a小于于b”这样的条件:条件成立时,ab为非零,执行受if控制的语句;条件不成立时,a =b)if(ac)printf(“The biggest is a=%dn”,a);else printf(“The biggest is c=%dn”,c);else if(bc)printf(“The biggest is b=%dn”,b);else printf(“The
3、 biggest is c=%dn”,c);if语句的嵌套第10页/共33页3、多分支选择if语句 语句形式:if (if (表达式表达式11)语句语句11;else else if (if (表达式表达式22)语句)语句22;else else if (if (表达式表达式nn)语句语句nn;else else 语句语句n+1n+1;if-else匹配原则:就近匹配第11页/共33页例:计算分段函数。#include void main()float x,y;printf(enter x:);scanf(%f,&x);else if (x=1)y=x+5;else if (xb&ac)pri
4、ntf(“The biggest is a=%dn”,a);if(ba&bc)printf(“The biggest is b=%dn”,b);if(ca&cb)printf(“The biggest is c=%dn”,c);第13页/共33页当多个条件之一成立,即可做某些事情,要借助于当多个条件之一成立,即可做某些事情,要借助于“|”运算符来组合各条件运算符来组合各条件成为一个大条件。成为一个大条件。int time;scanf(“%d”,&time);if(time=100|time=-1)printf(“you 完蛋了!”);else printf(“you 还有希望,努力改造!”);
5、第14页/共33页&|!等逻辑运算符常用来表示由多个条件组合而成的大条件;原则:大条件成 立,逻辑表达式的值为非零;大条件不成立,逻辑表达式的值为零;(判断闰年)第15页/共33页【例4-3】从键盘输入一个字符,判别它的类别由ASCII码表可知:ASCII值小于32的为控制字符ASCII值在0和9之间的为数字ASCII值在A和Z之间为大写字母ASCII值在a和z之间为小写字母其余则为其它字符第16页/共33页程序:#includevoidmain()charc;printf(Inputacharacter:);c=getchar();if(c=0&c=A&c=a&c=z)printf(This
6、isasmalllettern);elseprintf(Thisisanothercharactern);第17页/共33页【例4-4】比较两个数的大小关系,有三种结果:大于、小于和等于,采用if语句的嵌套结构来完成。#includevoidmain()inta,b;printf(pleaseinputa,b:);scanf(%d%d,&a,&b);if(a!=b)if(ab)printf(abn);elseprintf(abn);elseprintf(a=bn);第18页/共33页4.5 多分支选择语句语句一般形式:switch (表达式)case 常量1:语句1;case 常量2:语句2;
7、case 常量3:语句3;.case 常量n:语句n;default:语句n+1;根据表达式的不同值,选择不同的根据表达式的不同值,选择不同的程序分支,又称开关语句程序分支,又称开关语句。整型或字符型常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。千万不能接(;)号执行过程?第19页/共33页【例4-6】输入一个数字,输出对应的星期几的英文单词。#includevoidmain()inta;printf(inputintegernumber:);scanf(%d,&a);switch(a)case1:printf(Mondayn);case2:printf
8、(Tuesdayn);case3:printf(Wednesdayn);case4:printf(Thursdayn);case5:printf(Fridayn);case6:printf(Saturdayn);case7:printf(Sundayn);default:printf(errorn);程序运行结果:程序运行结果:input integer number:5input integer number:5 Friday Friday SaturdaySaturdaySunday Sunday errorerror第20页/共33页4.5.2 break语句在多分支选择结构中的应用br
9、eakcase语句后加上break语句;每当执行到break语句时,立即跳出switch语句体。第21页/共33页将上面的例4-6修改如下:#include stdio.hvoid main()int a;printf(input integer number:);scanf(%d,&a);switch(a)case 1:printf(Mondayn);break;case 2:printf(Tuesdayn);break;case 3:printf(Wednesdayn);break;case 4:printf(Thursdayn);break;case 5:printf(Fridayn);
10、break;case 6:printf(Saturdayn);break;case 7:printf(Sundayn);break;default:printf(Errorn);程序运行结果:5Friday 第22页/共33页【例4-7】学生分数成绩转换为相应的等级成绩程序流程图:第23页/共33页程序源代码及运行结果#includevoidmain()ints;printf(Inputascore:);scanf(%d,&s);/s中存放学生的成绩printf(Yourscore:%d,s);switch(s/10)/巧妙利用整除,把一个区间段范围的值对应到一个数据上case10:case9
11、:s=A;break;case8:s=B;break;case7:s=C;break;case6:s=D;break;default:s=E;printf(%cn,s);程序运行结果:程序运行结果:Input a score:65Input a score:65Your score:65 DYour score:65 D 1、多个case语句可以共用一组执行语句。2、各case子句的先后顺序可以变动,而不会影响程序执行结果。第24页/共33页4.6应用举例【例4-8】输入三个整数,输出最大数和最小数。算法分析:l首先比较a,b的大小,把大数装入max,小数装入min中l接下来max和min再与
12、c比较,若max小于c,则把c赋予max;如果c小于min,则把c赋予min,因此max内总是最大数,而min内总是最小数。l最后输出max和min的值即可。第25页/共33页程序源代码及运行结果#includevoidmain()inta,b,c,max,min;printf(inputthreenumbers:);scanf(%d%d%d,&a,&b,&c);if(ab)max=a;min=b;elsemax=b;min=a;if(maxc)min=c;printf(max=%dnmin=%d,max,min);程序运行结果:程序运行结果:input three numbers:3 4 5
13、input three numbers:3 4 5max=5max=5min=3min=3第26页/共33页例:企业发放的奖金根据利润提成。从键盘输入当月利润,求应发放奖金总数?第27页/共33页利润xx=1010 x2020 x4040 x6060 x100100 x(int)x/10 常量0,11,22,3,44,5,66,7,8,9,1010以上用这种方法转换后,n出现了在不同区域有重复数字的情况。解决的方法有很多,其中一种是可以采用当x为10的整数倍时,将计算出的n值减1。使用switch解题的关键,通过分析找到表达式,将问题分成几种情况。第28页/共33页#include stdio
14、.hvoid main()float x,y;int n;scanf(%f,&x);n=(int)x/10;if(int)x/10=x/10)n-;switch(n)case 0:y=x*0.1;break;case 1:y=x*0.12;break;case 2:case 3:y=x*0.14;break;case 4:case 5:y=x*0.16;break;case 6:case 7:case 8:case 9:y=x*0.18;break;default:y=x*0.2;printf(y=%.2fn,y);源程序:第29页/共33页【例4-11】任意输入三个数,代表三角形的三条边长,
15、判断能否构成三角形#includevoidmain()floata,b,c;scanf(%f,%f,%f,&a,&b,&c);if(a+b)c&(a+cb)&(b+ca)if(a=b)&(b=c)printf(equalateraltriangle.n);elseif(a=b)|(a=c)|(b=c)printf(isoscelestriangle.n);elseprintf(othertriangle.n);elseprintf(cannotn);程序运行结果:5,5,5equalateral triangle.第30页/共33页小结 l关系运算符、逻辑运算符、关系表达式。l这些表达式常作为条件选择语句的判断条件。lC语言的条件选择语句有两种:if语句和switch语句lif语句有三种形式:l单分支选择if语句l双分支选择if语句l多分支选择if语句lswitch语句联合break语句构成了一种多分支选择结构,并且形式上比用if语句的嵌套清晰易读。第31页/共33页第一次 P52:4.1、4.4、4.8第二次 P52:4.6、4.10 作业第32页/共33页感谢您的欣赏!第33页/共33页