《第五章选择结构程序设计精选文档.ppt》由会员分享,可在线阅读,更多相关《第五章选择结构程序设计精选文档.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五章选择结构程序设计本讲稿第一页,共二十四页第五章第五章 选择结构程序设计选择结构程序设计 n n本章主要内容:本章主要内容:5.1 5.1 关系运算符及其表达式关系运算符及其表达式关系运算符及其表达式关系运算符及其表达式 5.2 5.2 逻辑运算符及其表达式逻辑运算符及其表达式逻辑运算符及其表达式逻辑运算符及其表达式 5.3 if5.3 if语句语句语句语句 5.4 switch5.4 switch语句语句语句语句5.5 5.5 综合应用举例综合应用举例综合应用举例综合应用举例 n n本章重点:本章重点:熟练掌握关系、逻辑运算;熟练掌握关系、逻辑运算;熟练掌握关系、逻辑运算;熟练掌握关系、
2、逻辑运算;深刻理解深刻理解深刻理解深刻理解if if语句的执行过程及在程序设计中的作用;语句的执行过程及在程序设计中的作用;语句的执行过程及在程序设计中的作用;语句的执行过程及在程序设计中的作用;熟练掌握熟练掌握熟练掌握熟练掌握if if语句的变化和语句的变化和语句的变化和语句的变化和switchswitch语句的功能和作用。语句的功能和作用。语句的功能和作用。语句的功能和作用。本讲稿第二页,共二十四页5.1 5.1 关系运算符及其表达式关系运算符及其表达式 1 1关系运算符:关系运算符:=!=2 2关系表达式关系表达式525=2比较的结果是一个逻辑量,即比较的结果是一个逻辑量,即“真真”或或
3、“假假”,分别用整数,分别用整数1和和0表示。表示。3 3关系运算符的优先级低于算术运算符,高于赋关系运算符的优先级低于算术运算符,高于赋值运算符。如:值运算符。如:a=2*25-1n n例例5.1 关系运算符的应用关系运算符的应用选择结构程序设计成立,为成立,为成立,为成立,为“真真真真”(1)”(1)不成立,为不成立,为不成立,为不成立,为“假假假假”(0)”(0)本讲稿第三页,共二十四页5.2 逻辑运算符及其表达式逻辑运算符及其表达式1 1逻辑运算符逻辑运算符!(逻辑非)、(逻辑非)、&(逻辑与)、(逻辑与)、|(逻辑或)(逻辑或)2 2逻辑表达式逻辑表达式!(ab)10 x&y100p
4、=q|x!=y 逻辑表达式的结果还是逻辑值,即逻辑表达式的结果还是逻辑值,即“真真”或或“假假”,分别用,分别用1和和0表示。表示。n n例例5.2 逻辑运算典型的运算量是关系表达式逻辑运算典型的运算量是关系表达式 选择结构程序设计本讲稿第四页,共二十四页n n运算量是算术表达式时,如果算术表达式的值为运算量是算术表达式时,如果算术表达式的值为0则认为则认为“假假”,非,非0认为认为“真真”。n n在一个逻辑表达式中可以包含多个逻辑运算和其它在一个逻辑表达式中可以包含多个逻辑运算和其它各种运算符,这时将按它们的优先级进行运算各种运算符,这时将按它们的优先级进行运算:选择结构程序设计()!、+、
5、-、+、-*、/、%+、-、=、=、!=!=&|=、+=+=、-=-=、*=*=、/=/=、%=%=等等等等 高高高高低低低低本讲稿第五页,共二十四页n n如表达式如表达式“53&2|84-!0”的运算顺序如下:的运算顺序如下:n n短路运算:由于逻辑运算的特殊性,逻辑表达式短路运算:由于逻辑运算的特殊性,逻辑表达式求值不一定必须求到底。求值不一定必须求到底。如:如:a&b&ca&b&ca|b|ca|b|c选择结构程序设计 只有只有只有只有a a a a为真时才判断为真时才判断为真时才判断为真时才判断b b b b,只有,只有,只有,只有a&ba&ba&ba&b为真时才判断为真时才判断为真时才
6、判断为真时才判断c c c c。亦即:若。亦即:若。亦即:若。亦即:若a a a a为假,表为假,表为假,表为假,表达式的值已经肯定为假,不必再往下达式的值已经肯定为假,不必再往下达式的值已经肯定为假,不必再往下达式的值已经肯定为假,不必再往下判断了。判断了。判断了。判断了。只要只要只要只要a a为真,就不必再继续判断,为真,就不必再继续判断,为真,就不必再继续判断,为真,就不必再继续判断,结果一定为真。结果一定为真。结果一定为真。结果一定为真。本讲稿第六页,共二十四页n n用来判定所给定的条件是否满足,根据判定的用来判定所给定的条件是否满足,根据判定的结果结果(真或假真或假)决定要执行的语句
7、。决定要执行的语句。1 1if语句的格式:语句的格式:格式格式格式格式1 1:if(if(if(if(表达式表达式表达式表达式)语句语句语句语句如:如:如:如:if(ab)a=b;if(ab)c=a;if(ab)c=a;else c=b;else c=b;printf(“c=%dn”,c);printf(“c=%dn”,c);例例例例5.5-1 5.5-1 将输入的两个数中最大的打印出来。将输入的两个数中最大的打印出来。将输入的两个数中最大的打印出来。将输入的两个数中最大的打印出来。例例例例5.5-2 5.5-2 将输入的两个数先大后小输出。将输入的两个数先大后小输出。将输入的两个数先大后小输
8、出。将输入的两个数先大后小输出。选择结构程序设计表达式真假语句1语句2本讲稿第八页,共二十四页2 2嵌套的嵌套的if语句语句n n在在if语句中的语句中的“语句语句”处又是处又是if语句,则称为语句,则称为if语句的嵌套。一般格式如下:语句的嵌套。一般格式如下:if(if(表达式表达式表达式表达式1)1)if(if(表达式表达式表达式表达式2)2)语句语句语句语句1 1elseelse语句语句语句语句2 2elseelseif(if(表达式表达式表达式表达式3)3)语句语句语句语句3 3elseelse语句语句语句语句4 4 n n在嵌套的在嵌套的if语句中,人们习惯将它写成锯齿形,语句中,人
9、们习惯将它写成锯齿形,以增加程序的可读性。以增加程序的可读性。选择结构程序设计本讲稿第九页,共二十四页n n内层的内层的if语句如果是简化的语句如果是简化的if,如:,如:if(if(表达式表达式1)1)if(if(表达式表达式2)2)语句语句1 1elseelse语句语句2 2n n从最内层开始,从最内层开始,else总是与它上面最近的、未曾总是与它上面最近的、未曾配对的配对的if配对。配对。选择结构程序设计?本讲稿第十页,共二十四页例例5.6 求分段函数的值求分段函数的值main()main()int x,y;int x,y;scanf(“%d”,&x);scanf(“%d”,&x);pr
10、intf(“y=%dn”,y);printf(“y=%dn”,y);选择结构程序设计if(x0)y=-1;else if(x=0)y=0;else y=1;if(x=0)if(x=0)if(x0)y=1;else y=0;y=0;if(x=0)if(x0)y=1;elsey=-1;本讲稿第十一页,共二十四页3 3else-if格式格式if(if(表达式表达式表达式表达式1)1)语句语句语句语句1 1else if(else if(表达式表达式表达式表达式2)2)语句语句语句语句2 2else if(else if(表达式表达式表达式表达式3)3)语句语句语句语句3 3elseelse语句语句语
11、句语句n n n n它实际上是它实际上是if语句在语句在else中有中有if嵌套的格式变化。嵌套的格式变化。如:如:选择结构程序设计if(x0)if(x0)y=-1;y=-1;elseelseif(x=0)y=0;if(x=0)y=0;else y=1;else y=1;本讲稿第十二页,共二十四页n n 例例例例5.7 5.7 输入考试成绩的等级,打印出百分制分数段(输入考试成绩的等级,打印出百分制分数段(输入考试成绩的等级,打印出百分制分数段(输入考试成绩的等级,打印出百分制分数段(A A等:等:等:等:8585分分分分以上,以上,以上,以上,B B等:等:等:等:70847084,C C等
12、:等:等:等:60696069,D D等:等:等:等:6060分以下)。分以下)。分以下)。分以下)。main()main()char grade;char grade;scanf(“%d”,&grade);scanf(“%d”,&grade);if(grade=A)printf(“85100n”);if(grade=A)printf(“85100n”);else if(grade=B)printf(“7084n”);else if(grade=B)printf(“7084n”);else if(grade=C)printf(“6069n”);else if(grade=C)printf(“6
13、069n”);else if(grade=D)printf(“60n”);else if(grade=D)printf(“b)?a:b;与与if(ab)max=a;else max=b;等价等价 n n条件运算符的优先级仅仅高于赋值运算符和逗条件运算符的优先级仅仅高于赋值运算符和逗号运算符,低于所有其它运算符。号运算符,低于所有其它运算符。n n例例5.8 判断键盘输入的一个字符是否为大写字判断键盘输入的一个字符是否为大写字母,如果是则转换为小写字母,否则不转换。母,如果是则转换为小写字母,否则不转换。输出处理后的字符。输出处理后的字符。选择结构程序设计条件条件条件条件本讲稿第十四页,共二十四
14、页5.4 switch语句语句n n语法格式语法格式:switch(switch(表达式表达式表达式表达式)case case 常量常量常量常量1 1:语句组:语句组:语句组:语句组1 1case case 常量常量常量常量2 2:语句组:语句组:语句组:语句组2 2case case 常量常量常量常量n n:语句组:语句组:语句组:语句组n ndefaultdefault:语句组:语句组:语句组:语句组n+1n+1 选择结构程序设计=常量1=常量2=常量n表达式语句组1语句组2语句组n语句组n+1y yy yy yn nn nn n本讲稿第十五页,共二十四页n n如在例如在例如在例如在例5.
15、75.7中的中的中的中的if if部分可以考虑写成下面的部分可以考虑写成下面的部分可以考虑写成下面的部分可以考虑写成下面的switchswitch语句:语句:语句:语句:switch(grade)switch(grade)case A:printf(“85100n”);case A:printf(“85100n”);case B:printf(“7084n”);case B:printf(“7084n”);case C:printf(“6069n”);case C:printf(“6069n”);case D:printf(“60n”);case D:printf(“60n”);default
16、:printf(“Errorn”);default:printf(“Errorn”);若若若若grade=Cgrade=C,则输出:,则输出:,则输出:,则输出:606960696060ErrorError选择结构程序设计本讲稿第十六页,共二十四页改进的改进的switch语句语句n n语法格式语法格式:switch(switch(表达式表达式表达式表达式)case case 常量常量常量常量1 1:语句组:语句组:语句组:语句组1;break;1;break;case case 常量常量常量常量2 2:语句组:语句组:语句组:语句组2;break;2;break;case case 常量常量常
17、量常量n n:语句组:语句组:语句组:语句组n;break;n;break;defaultdefault:语句组:语句组:语句组:语句组n+1n+1 选择结构程序设计=常量1=常量2=常量n表达式语句组1语句组2语句组n语句组n+1y yy yy yn nn nn n本讲稿第十七页,共二十四页n n改进后的改进后的switch语句:语句:switch(grade)switch(grade)case A:printf(“85100n”);break;case A:printf(“85100n”);break;case B:printf(“7084n”);break;case B:printf(“
18、7084n”);break;case C:printf(“6069n”);break;case C:printf(“6069n”);break;case D:printf(“60n”);break;case D:printf(“60n”);break;default:printf(“Errorn”);default:printf(“Errorn”);若若grade=C,则输出:,则输出:60696069选择结构程序设计本讲稿第十八页,共二十四页n n多个多个case可以共用一组执行语句。如:可以共用一组执行语句。如:switch(grade)case A:case B:case C:print
19、f(“60100n”);break;case D:printf(“60n”);break;default:printf(“Errorn”);选择结构程序设计本讲稿第十九页,共二十四页5.5 综合应用举例综合应用举例n n例例5.9 在例在例2.9的计算机随机出一道两位数的加法的计算机随机出一道两位数的加法题中,当用户回答完毕后,给出适当的评语。题中,当用户回答完毕后,给出适当的评语。n n分析:分析:重设随机种子:重设随机种子:重设随机种子:重设随机种子:randomize();randomize();产生产生产生产生10991099之间的随机数:之间的随机数:之间的随机数:之间的随机数:a=
20、random(90)+10;a=random(90)+10;n n可能的运行情况:可能的运行情况:计算:计算:计算:计算:23+72=23+72=9696 回答错误,您输入的数是:回答错误,您输入的数是:回答错误,您输入的数是:回答错误,您输入的数是:9696要看答案吗要看答案吗要看答案吗要看答案吗(y/n)?(y/n)?y y 正确答案是:正确答案是:正确答案是:正确答案是:9595 选择结构程序设计本讲稿第二十页,共二十四页n n例例5.10 输入年、月,输出该月有多少天。输入年、月,输出该月有多少天。n n分析:分析:每年的每年的每年的每年的1 1、3 3、5 5、7 7、8 8、101
21、0、1212月有月有月有月有3131天;天;天;天;4 4、6 6、9 9、1111月有月有月有月有3030天;天;天;天;2 2月闰年有月闰年有月闰年有月闰年有2929天,平年有天,平年有天,平年有天,平年有2828天。天。天。天。年号能被年号能被年号能被年号能被4 4整除,但不能被整除,但不能被整除,但不能被整除,但不能被100100整除,或者年号能被整除,或者年号能被整除,或者年号能被整除,或者年号能被400400整除的年均是闰年。设年份为整除的年均是闰年。设年份为整除的年均是闰年。设年份为整除的年均是闰年。设年份为yearyear,判断,判断,判断,判断yearyear是是是是否为闰年
22、:否为闰年:否为闰年:否为闰年:if(year%4=0&year%100!=0 if(year%4=0&year%100!=0|year%400=0)|year%400=0)选择结构程序设计本讲稿第二十一页,共二十四页本章小结:n n本章介绍了关系运算符和逻辑运算符,由它们构本章介绍了关系运算符和逻辑运算符,由它们构成的表达式通常是在成的表达式通常是在if语句和循环语句中作为条件语句和循环语句中作为条件来使用的。来使用的。n nif语句和语句和switch语句的使用,使程序的执行变成了语句的使用,使程序的执行变成了“跳跃跳跃”式执行了,实际上是对程序中的某些部式执行了,实际上是对程序中的某些部
23、分实现的选择运行。这种选择是必要的,可以根分实现的选择运行。这种选择是必要的,可以根据不同的情况选择合适的代码进行处理。在理解据不同的情况选择合适的代码进行处理。在理解了问题的要求后,如果需要这样的选择,就应该了问题的要求后,如果需要这样的选择,就应该使用选择结构的语句。使用选择结构的语句。本讲稿第二十二页,共二十四页第5章作业n n5.1 输入一个整数,如果为正数或零,计算该数的输入一个整数,如果为正数或零,计算该数的平方;如果为负数,计算该数的立方。平方;如果为负数,计算该数的立方。n n5.2 输入一个整数,如果:输入一个整数,如果:(1)当为正数时,如果当为正数时,如果它即是它即是3又
24、是又是7的倍数,输出的倍数,输出“是是3、7的倍数的倍数”;否则输出否则输出“不是不是3、7的倍数的倍数”。(2)当为负数或零当为负数或零时,显示时,显示“不是正整数不是正整数”。n n5.3 输入输入3个数,将其中最大数输出。个数,将其中最大数输出。n n5.4 输入输入3个字母,按字母表顺序从小到大输出这个字母,按字母表顺序从小到大输出这3个字母。个字母。选择结构程序设计本讲稿第二十三页,共二十四页n n5.5 输入某学生成绩,若成绩在输入某学生成绩,若成绩在85分以上,输出分以上,输出very good,若成绩在,若成绩在6085分之间,输出分之间,输出good,若成绩低于若成绩低于60
25、分,输出分,输出no good。n n5.6 输入班号,输出该班学生的人数。用输入班号,输出该班学生的人数。用switch语语句完成。句完成。n n5.7 输入一个人的出生日期和今天的日期,计算输入一个人的出生日期和今天的日期,计算他的周岁。如今天是他的周岁。如今天是2003年年10月月11日,王明日,王明1984年年10月月5日出生,他日出生,他19岁;李丽岁;李丽1984年年10月月20日出日出生,她生,她18岁。岁。班班班班 号号号号 9191 9292 9393 9494 9595 9696人人人人 数数数数 3030 3232 3030 3030 3232 2525选择结构程序设计本讲稿第二十四页,共二十四页