《理学三大结构之顺序选择.pptx》由会员分享,可在线阅读,更多相关《理学三大结构之顺序选择.pptx(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1顺序结构程序设计w在顺序结构中,按语句出现的顺序依次执行,先出现的语句先执行,后出现的语句后执行,每条语句都执行。w只含赋值语句、输入语句和输出语句的程序,称作纯顺序结构程序。前面出现的程序都是纯顺序结构程序。第1页/共43页2顺序结构程序设计w顺序结构的框图第2页/共43页3顺序结构程序设计w程序模版定义符号常量命令与包含头文件命令定义符号常量命令与包含头文件命令main()定义变量定义变量 输入原始数据输入原始数据 处理(运算)处理(运算)输出结果输出结果 第3页/共43页4w举例求圆的周长和面积。已知三角形的两边夹角,求第三边和面积。输入一个三位整数,求它的个位、十位和百位数字,并反向
2、输出这个三位数。交换两个整型变量a,b的值。输入三个实数a,b,c(假设已满足a0且b2-4ac0),解一元二次方程ax2+bx+c=0。第4页/共43页5输入一个三位正整数,判断它是不是“水仙花数”(个位的立方,十位的立方与百位的立方和等于该数)。是,输出y,不是,输出n。第5页/共43页6关系运算符和关系表达式w关系运算符:数学上的等号、不等号在计算机程序设计语言中称作。w数学上的等号、不等号与C语言中的关系运算符之间的对应关系:数学上的等号、不等号 C语言中的关系运算符 (大于)(大于或等于)=(小于)(小于或等于)=0 表示x大于或等于0;m=n 表示m等于n;xz 表示x加y大于z。
3、第7页/共43页8w关系表达式的值:C语言中用逻辑值“真”,表示关系表达式“成立”;用逻辑值“假”,表示关系表达式“不成立”。wC语言中用整数1表示逻辑值“真”,用整数0表示逻辑值“假”:例:x为5,关系表达式x=0成立,此时,称关系表达式x=0的值为1。x为-3时,关系表达式x=0不成立,此时,称关系表达式x=0的值为0。第8页/共43页9练习练习:写出表示下列条件的关系表达式:.x为负数。.x为奇数。.x为偶数。.x为非负数。.x是3的倍数(x能被3整除)。.x不等于7。第9页/共43页10w关系运算符的优先级 第10页/共43页11选择执行语句w条件语句条件语句if(if(条件条件)语句
4、语句1 1;else else 语句语句2 2;w执行过程执行过程w流程图流程图 第11页/共43页12选择执行语句w练习 实现分段函数:x+5,x 0y=x2+5,x、=、=0),解一元二次方程ax2+bx+c=0。输入一个公元年份year,判断这一年是不是闰年。是,输出yes,不是,输出no。第19页/共43页20逻辑运算符和逻辑表达式w短路运算C语言规定逻辑与与逻辑或为“短路运算”,即在逻辑表达式求值时,不一定算到“底”。比如前面提到的逻辑表达式 5|x0,5非零为真,不论x0的值是什么,该逻辑表达式的值都为真,所以计算机执行程序时,并不计算x0的值;同理,x的值为-3时,如果求逻辑表达
5、式!(x7的值时,当计算!(x7的值了。这就如同体育比赛,规定“五局三牲”,当出现三比零或三比一时,胜负已定,比赛不必继续进行。第20页/共43页21逻辑运算符和逻辑表达式w练练习习:当a,b,c的值分别为3,4,5时,求下列逻辑表达式的值.a+bc&b=c.a|b+c&b-c.!(ab)&!c|1.!(x=a)&(y=b)&0.!(a+b)+c-1&b+c/2 第21页/共43页22If 嵌套w求三支函数 y=1 (x0)的值。w 0 (x=0)w -1 (x=0)if(x0)y=1;else y=0;else y=-1;printf(“y=%fn”,y);第24页/共43页25If 嵌套w
6、If嵌套和多路分支w两层嵌套处理三路分支两层嵌套处理三路分支有两种情况。1.里层if语句为语句1,在else前if(条件1)if(条件2)语句1;else 语句2;else 语句3;第25页/共43页26If 嵌套2.里层if语句为语句2,在else后 if(条件1)语句1;else if(条件2)语句2;else 语句3;第26页/共43页27If 嵌套main()float x,y;scanf(“%f”,&x);if(x0)y=1;else if(x=0)y=0;else y=-1;printf(“y=%fn”,y);这种情况,常常把外层的else与里层的if写在一行上,(写成else i
7、f)第27页/共43页28If 嵌套w四路及多路分支w1.用两层嵌套处理四路分支w把百分制分数s,转化为等级制A、B、C、D。若90s100,则s转化为A;若80s89,则s转化为B;若60s79,则s转化为C;若0s59,则s转化为D。第28页/共43页29If 嵌套main()int s;char g;scanf(“%d”,&s);if(s=80)if(s=90)g=A;else g=B;else if(s=60)g=C;else g=D;printf(“%cn”,g);第29页/共43页30If 嵌套3.用三层嵌套处理四路分支上面的问题用三层嵌套处理,程序为:main()int s;ch
8、ar g;scanf(“%d”,&s);if(s=90)g=A;else if(s=80)g=B;else if(s=60)g=C;else g=D;printf(“%cn”,g);第30页/共43页31If 嵌套if if(条件表达式(条件表达式1 1)语句语句1 1;else if else if(条件表达式(条件表达式2 2)语句语句2 2;else if else if(条件表达式(条件表达式3 3)语句语句3 3;elseelse 语句语句n n;第31页/共43页32If 嵌套w关于else与if匹配w在if嵌套处理过程中,也有短式if出现。这样,else的个数就少于if的个数。那
9、么else与哪个if匹配?为避免二义性,C语言规定,else与前面最近的if匹配。例如,出现if(条件1)if(条件2)语句1;else if(条件3)语句2;else 语句3;if(条件1)if(条件2)语句1;else if(条件3)语句2;else 语句3;if(条件1)if(条件2)语句1;else if(条件3)语句2;else 语句3;if(条件1)if(条件2)语句1;else if(条件3)语句2;else 语句3;第32页/共43页33If 嵌套w练习:1、求数学函数 x2,x 2 y=|x|,-2x0时,方程有两个不等的实根,当=0时,方程有两个相等的实根,当0时,方程没有
10、实数根。3、设计一个计算实数四则运算的计算器。第33页/共43页34If 嵌套设计一个计算实数四则运算的计算器:main()float x,y,z;char c;scanf(“%f%c%f”,&x,&c,&y);if(c=+)z=x+y;else if(c=-)z=x-y;else if(c=*)z=x*y;else z=x/y;printf(“z=%7.2fn”,z);第34页/共43页35switch语句wswitch语句switch语句是用来处理多路分支的另一种常用语句。凡是能用switch语句来处理的问题,都能用if语句处理。wswitch语句处理多路分支的优势用switch语句处理,
11、技巧高一些。在某些情况下,用switch语句处理多路分支,程序更清晰,可读性更好。wswitch语句的标准格式 switch(表达式)case 常量表达式1:语句1;break;case常量表达式2:语句2;break;case常量表达式3:语句3;break;case常量表达式n:语句n;break;default:语句n+1;第35页/共43页36wswitch语句的应用 1.用switch语句设计实数四则运算的计算器。2.用switch语句把百分制分数s,转化为等级制A、B。若90s100,则s转化为A;若60s89,则s转化为B;若0s59,则s转化为C。第36页/共43页37w练习练
12、习:用 switch语句,处理如下问题。1.按着考试成绩的等级,打印出百分制的分数段:A对应90100;B对应8089;C对应7079;D对应6069;E对应059。2.实现输入奖学金等级,输出奖学金金额:共分3等,一等1000,二等500,三等200;3.全班同学按学号先后顺序编号为1、2、3,按照同学的编号将全班同学分为5组:要求输入某同学的编号,输出该同学应当的分组号。4.货运公司运货计费问题,计算公式f=p*w*s*(1-d)。这里f为运费,p为单价(元/吨*公里),w为货物的重量,s为公里数,d为折扣。远程有折扣,当路程s满足:s500公里时,折扣为0;500s1000公里时,折扣为
13、5%;1000sb)max=a;else max=b;如果用条件运算符,就简单了:max=ab?a:b?:称作“条件运算符”条件运算符的优先级与结合性 第38页/共43页39选择执行语句w写按条件执行语句的注意事项:条件表达式的值决定了程序的走向,决定了程序执行不同的分支注意条件的正确表达:是否应该包括相等的情况对于float变量,一定要避免用“=”或“!=”与数字进行比较条件经常用关系表达式、逻辑表达式表示,但也可以是算术表达式,甚至是赋值表达式 条件表达式中,注意别把“=”写成“=”注意ifelse的配对:else总是跟最近的没配过对的if配对第39页/共43页40选择执行语句w注意:sw
14、itch-case的格式(整型表达式?常量表达式?)如果不加break,结果如何?整型表达式的数值类型必须和case语句中的常量表达式的类型一致(只能是int型或者char型)所有常量表达式的类型必须相同,而它们的值必须互不相同 switch-case格式与ifelse ifelse的区别?第40页/共43页41 w习题1.输入一个正整数,如果能同时被3和7整除,输出yes,否则输出no。x+4 (x=5)2.求三支函数 y=2x-1 (-1=x5)的值。3x (x-1)3.输入年、月,输出这月有多少天。4.输入三个正实数,以它们作为三边的长。如果能构成三角形,则求周长和面积;否则,输出no。
15、5.输入一个字符,若是小写字母则输出1,若是大写字母则输出2,若是数字则输出3,否则输出4。6.征收购物税的的标准是,1000元以下部分免税,1000元5000元部分征收2%,5000元10000元部分征收5%,10000元以上部分征收8%。编写一个计税程序。第41页/共43页42/*输入年、月、日,输出这一天是该年的第几天。*/main()int year,month,day;scanf(%d%d%d,&year,&month,&day);switch(month-1)case 11:day=day+30;case 10:day=day+31;case 9:day=day+30;case 8:day=day+31;case 7:day=day+31;case 6:day=day+30;case 5:day=day+31;case 4:day=day+30;case 3:day=day+31;case 2:if(year%4=0&year%100!=0|year%400=0)day=day+29;else day=day+28;case 1:day=day+31;printf(%dn,day);getch();第42页/共43页43感谢观看!感谢观看!第43页/共43页
限制150内