第5章选择结构程序设计.ppt

上传人:sccc 文档编号:4956696 上传时间:2023-05-26 格式:PPT 页数:49 大小:316.04KB
返回 下载 相关 举报
第5章选择结构程序设计.ppt_第1页
第1页 / 共49页
第5章选择结构程序设计.ppt_第2页
第2页 / 共49页
第5章选择结构程序设计.ppt_第3页
第3页 / 共49页
第5章选择结构程序设计.ppt_第4页
第4页 / 共49页
第5章选择结构程序设计.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《第5章选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第5章选择结构程序设计.ppt(49页珍藏版)》请在三一办公上搜索。

1、第 5 章 选择结构程序设计,关系运算符和关系表达式 逻辑运算符和逻辑表达式 If语句条件运算符 switch 语句,0.本章内容,2,1.关系运算符和关系表达式,关系运算比较运算 例:a3是一比较运算,当a=5,a3成立,结果称为“真”;否则,当 a=1,a3不成立,结果称为“假”。关系运算符种类=!=关系运算符优先次序,=为同一优先级,=,!=为同一优先级,但前者高于后者。关系运算符的优先级低于算术运算符,高于赋值运算符。,3,1.关系运算符和关系表达式,4,例 ca+b c(a+b)ab!=c(ab)!=c a=bc a=(bc),1.关系运算符和关系表达式,关系表达式用关系运算符将两个

2、表达式(算术、关系、逻辑、赋值、字符等表达式)连接起来的式子。例如:ab,a+bb+c,(a=3)(b=5),a b,(ab)(bc)关系表达式的结果值规定为1或01 结果为真(成立)0 结果为假(不成立),5,1.关系运算符和关系表达式,(ab)=c b+cb f=abc,6,成立 1 不成立 0 则ab值为1,所以d=1.ab为1,abc为0,所以f=0.,【例1】当a=3,b=2,c=1时判断下面表达式的值,以下选项中,当x为大于1的奇数时,值为0的表达式:A)x%2=1 B)x/2 C)x%2!=0 D)x%2=0,2.逻辑运算符和逻辑表达式,逻辑运算符种类&(与)(或)!(非)逻辑运

3、算符意义见真值表,7,2.逻辑运算符和逻辑表达式,逻辑运算符优先次序!(非)优先于&(与),&优先于。即:!&和低于所有关系运算,!高于所有算术运算符,8,例:!a&b xy&c(!a)&b)(xy)&c),2.逻辑运算符和逻辑表达式,逻辑表达式用逻辑运算符将关系表达式、逻辑表达式连接起来的式子逻辑表达式。逻辑表达式的结果值规定为1或0.1 结果为真(成立)0 结果为假(不成立)例:a=4 则!a 值为0.此处只要a 0,为真.则!a值为0.a=4,b=5 a&b为1 a=4,b=5 a b为1 a=4,b=5!a b为1 4&0 2 为1.在逻辑运算中,非0值参加逻辑运算时被看成1处理,9,

4、2.逻辑运算符和逻辑表达式,一个逻辑表达式中的逻辑运算符并不是一定全部执行.(短路运算)a后,表达式x+y的值为:A)1 B)2 C)3 D)4,10,1,3.If 语句,If语句的3种形式形式1:语句格式:if(表达式)语句A;例:if(xy)printf(%d,x);功能:当表达式值非0时,执行语句A,否则不执行语句A.其流程图:,11,3.If 语句,【例2】计算一个整数的绝对值,12,main()int a,abs;printf(enter one number:);scanf(%d,运行结果:enter one number:-9|-9|=9,3.If 语句,【例3】判断一个整数是否

5、为正数(学生练习),13,main()int a;printf(enter one number:);scanf(%d,运行结果:enter one number:2626 is plus number!,输出a,输入整数a,a 0,N,Y,开始,结束,3.If 语句,形式2:语句格式:if(表达式)语句A;else 语句B;例:if(xy)printf(%d,x);else printf(%d,y);功能:当表达式值非0时,执行语句A,否则执行语句B.其流程图:,14,3.If 语句,【例4】例2计算一个整数的绝对值可改写为:,15,main()int a,abs;printf(enter

6、one number:);scanf(%d,3.If 语句,【例5】求分段函数值:,16,main()float x,y;printf(input x:);scanf(%f,3.If 语句,形式3:语句格式:if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;.else if(表达式n)语句n;else 语句n+1;对于一个问题可能需要从多方面进行判断,有多种可能的情况进行处理,17,3.If 语句,其流程图:,18,3.If 语句,【例6】求分段函数值:,19,3.If 语句,程序代码:,20,#includestdio.hmain()float x,

7、y;printf(enter x:);scanf(%f,3.If 语句,【例7】设计奖学金评定程序(学生练习)用户输入学生综合测评总分,程序输出对应的等级和奖学金。总分300 一等奖学金 5000元 总分=200 二等奖学金 3000元 总分=100 三等奖学金 1000元 总分100 无 0 元,21,3.If 语句,【例8】输入两个实数,按代数值由小到大次序输出这两个数。,22,main()float a,b,t;scanf(%f,%f,运行结果是:3.6,3.2 3.20,3.60,3.If 语句,【例9】输入三个数,按小大顺序输出。,23,main()float a,b,c,t;sca

8、nf(%f,%f,%f,运行结果是:3,7,11.00,3.00,7.00,3.If 语句,If语句嵌套 if 语句体中又包含一个或多个if语句,称为if语句的嵌套 嵌套形式:,24,if(e1)if(e2)s1;else s2;else s3;,if(e1)if(e2)s1;else s2;,if(e1)s1;else if(e2)s2;else s3;,3.If 语句,25,if与 else的配对的原则从最内层开始,else总是与它前面最近的同一复合语句内的不带else 的if结合如果if和 else的数目不统一,可以加明确配对关系,if()if()语句1 else if()语句2 els

9、e 语句3,必要时加.if()if()语句1 else,3.If 语句,26,例:if(x)if(y)printf(“yn”);else if(z)printf(“zn”);else printf(“xn”);,if(x)if(y)printf(“yn”);else if(z)printf(“zn”);else printf(“xn”);,如果要实现例中书写形式的意图,可写成如下形式:,3.If 语句,27,【例10】阅读程序回答问题,#include main()int a,b,m,n;scanf(“%d%d”,1)当输入为-1 2,程序的 运行结果为多少?,m=1 n=2,2)当输入为1

10、0,程序的 运行结果为多少?,m=2 n=3,3)为了输出n=4,变量a和b应具 备的条件是什么?,0ab,3.If 语句,28,【例11】从键盘上输入每个学生三门课程的成绩,计算其平均值 当平均成绩高于90分时,输出A;平均分在80-89之间,输出B;平均分在70-79之间,输出C;平均分在60-69之间,输出D;平均成绩不及格(小于60分)时输出E,3.If 语句,29,程序代码,main()int inp1,inp2,inp3,sum,ave;printf(“Enter students scores in three tests:n”);scanf(“%d%d%d”,3.If 语句,3

11、0,使用简单 if语句,使用ifelse if 语句,if(ave=90)printf(“A”);if(ave=80,if(ave=90)printf(“A”);else if(ave=80)printf(“B”);else if(ave=70)printf(“C”);else if(ave=60)printf(“D”);else printf(“E”);,3.If 语句,31,习题 P111(5.4 5.5 5.6),学生练习,4.条件运算符和条件表达式,判断条件不论是“真”是“假”,均给同一变量赋值时,简化语句书写条件运算符为?:三目运算符 形式:表达式1?表达式2:表达式3功能:先判表达

12、式1,若非0,则条件表达式值为表达式2的值,否则为表达式3的值。例:max=ab?a:b;当ab max a 否则maxb,32,4.条件运算符和条件表达式,条件运算符优先次序条件运算符优先于赋值运算符条件运算符低于关系运算符和算术运算符条件运算符结合性为从右至左注意条件表达式不能取代一般的if语句,只有当if 的两个分支为给同一变量赋值时才可替代if表达式1、表达式2、表达式3可类型不同已知 char ch=C;则以下表达式的值是ch=(ch=A A)A B)a C)Z D)c,33,4.条件运算符和条件表达式,【例12】输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是

13、,不转换。然后输出最后得到的字符。,34,main()char ch;scanf(%c,运行结果是:A a,5.switch 语句,语句格式功能根据表达式的取值,判断其与哪一个常量表达式相等。如=表达式i,则自语句i开始执行,直到语句n+1止。若与所有常量表达式值不相等,则从default后的语句开始执行。,35,switch(表达式e)case 常量表达式a1:语句序列S1;break;case 常量表达式a2:语句序列S2;break;case 常量表达式an:语句序列Sn;break;default:语句S;,5.switch 语句,36,例:根据成绩等级打印百分数段.switch(gr

14、ade)case A:printf(85100n);case B:printf(7084n);case C:printf(6069n);case D:printf(60n);default:printf(errorn);,存在一个问题:没有完全起到分支作用。解决办法:增加break语句,使之跳出switch结构。,5.switch 语句,注意:常量表达式的类型必须是整型、字符型或枚举型,且必须互不相等,否则二异性。case顺序无关紧要。不一定非用break不可,有时几种情况合并执行一组语句。,37,例:switch(grade)case A:case B:case C:printf(60n);

15、break;case D:printf(60n);break;,5.switch 语句,什么时候用一条switch语句比用多条if语句更好?switch语句与if语句不同 switch语句只能对等式进行测试 if 语句可以计算关系表达式或逻辑表达式等如果有两条以上基于同一个整型变量的条件表达式,那么最好使用switch语句,38,if(x=1)printf(”x is equal to one.n”);elseif(x=2)printf(”x is equal to two.n”);elseif(x=3)printf(”x is equal to three.n”);else printf(”

16、x is not equal to one,two,three.n”);,5.switch 语句,39,不如使用如下switch代码,它更易于阅读和维护:switch(x)case 1:printf(”x is equal to one.n”);break;case 2:printf(”x is equal to two.n”);break;case 3:printf(”x is equal to three.n”);break;default:printf(”x is not equal to one,two,three.n”);,5.switch 语句,switch嵌套语句在switch语

17、句中,每个case后面可以出现另一个switch语句,从而形成嵌套switch语句,40,阅读下面程序:计算结果#include main()int a=2,b=7,c=5;switch(a0)case 1:switch(b0)case 1:printf(“”);break;case 2:printf(“!”);break;case 2:switch(c=5)case 0:printf(“*”);break;case 1:printf(“#”);break;default:printf(“$”);break;default:printf(“,运行结果是:#&,5.switch 语句,【例13】

18、编写一个程序,完成两个数的四则运算(数与运算符由键盘给入)分析调用输入函数输入操作数和运算符四则运算规则,41,5.switch 语句,42,#includemain()float x,y;char op;printf(ntype in your expression:);scanf(%f%c%f,43,小测试,1:下述程序段中,无语法错误的是,A)int a=2,b=0;switch(a)case b+1:a-;break;case b=5:a+=10;break;,B)char x=A,y=1;switch(x)case A:y+;break;case-1:y=5;,C)int a,b=5

19、;switch(b)case b0:a=1;break;case b=0:a=0;break;,D)#define M 10 int a=1,b=0;switch(a)case M:b+=5;break;case 10:b=1;break;,B,44,小测试,2.以下程序的运行结果是:main()int x1=3,x2=0,x3=0;if(x1=x2+x3)printf(*);else printf(#);A.输出:*B.输出:#C.存在语法错误 D.无输出结果,B,C,45,4.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else总是与 A.缩排位置相同的if配对 B.其

20、之前最近且不带else的if配对 C.其之前最近的if配对 D.第一个if配对,5.若执行以下程序时从键盘上输入3 4,则输出结果是 main()int a,b,s;scanf(%d%d,A.14 B.16 C.18 D.20,B,B,小测试,6.输入三个数,找出并打印最小数 7.编写一个程序根据用户输入的三角形的三边判定三角形的类型并求其面积,小测试,46,六题算法分析设3个数分别是a、b和c将a、b中较小者赋值给min用min与c进行比较,取其中较小者重新赋值给min将min作为最后结果输出,main()int a,b,c;printf(“input a,b,c:n”);scanf(“%d

21、%d%d”,&a,&b,&c);if(ab)min=a;else min=b;if(cmin)min=c;printf(“the result is%dn”,min);,七题算法分析 设三角形的三边为a,b,c是否能组成三角形条件:a+bc&a+cb&b+ca 如果组成三角形计算三角形的面积判断是什么类型三角形?等边三角形 等腰三角形 直角三角形 一般三角形,小测试,47,程序代码,#include“stdio.h”#include“math.h”main()float a,b,c;float s,area;printf(“a,b,c=”);scanf(“%f,%f,%f”,小测试,48,实验 3 选择结构程序设计,【实验目的】(1)了解C语言表示逻辑量的方法。(2)学会正确使用逻辑运算符和表达式。(3)熟练掌握if语句和switch语句。(4)结合程序掌握一些简单的算法。(5)学习调试程序。【实验内容】习题111(5.7,5.9),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号