第五章选择结构程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第五章选择结构程序设计本章主要内容:5.1关系运算符及其表达式5.2逻辑运算符及其表达式5.3if语句5.4switch语句5.5综合应用举例本章重点:熟练掌握关系、逻辑运算;深刻理解if语句的执行过程及在程序设计中的作用;熟练掌握if语句的变化和switch语句的功能和作用。5.1关系运算符及其表达式一.关系运算符:====!=二.关系表达式525=2比较的结果是一个逻辑量,即“真”或“假”,分别用整数1和0表示。三.关系运算符的优先级低于算术运算符,高于赋值运算符。如:a=2*28(b=2)5-1[例5.1]关系运算符的应用选择结构程序设计成立,为“真”(1)不成立,为“假”(0)5.2逻辑运算符及其表达式一.逻辑运算符!(逻辑非)、&&(逻辑与)、||(逻辑或)二.逻辑表达式!(ab)10x&&y100p==q||x!=y逻辑表达式的结果还是逻辑值,即“真”或“假”,分别用1和0表示。[例5.2]逻辑运算典型的运算量是关系表达式选择结构程序设计运算量是算术表达式时,如果算术表达式的值为0则认为“假”,非0认为“真”。在一个逻辑表达式中可以包含多个逻辑运算和其它各种运算符,这时将按它们的优先级进行运算:选择结构程序设计()!、++、--、+、-*、/、%+、-、=、、===、!=&&||=、+=、-=、*=、/=、%=等高低如表达式“53&&2||84-!0”的运算顺序如下:短路运算:由于逻辑运算的特殊性,逻辑表达式求值不一定必须求到底。如:a&&b&&ca||b||c选择结构程序设计只有a为真时才判断b,只有a&&b为真时才判断c。亦即:若a为假,表达式的值已经肯定为假,不必再往下判断了。只要a为真,就不必再继续判断,结果一定为真。用来判定所给定的条件是否满足,根据判定的结果(真或假)决定要执行的语句。一.if语句的格式:格式1:if(表达式)语句如:if(ab)a=b;printf(“a=%d\n”,a);[例5.5-1]将输入的两个数中最大的打印出来。[例5.5-2]将输入的两个数先大后小输出。表达式语句真假5.3if语句选择结构程序设计格式2:if(表达式)语句1else语句2如:if(ab)c=a;elsec=b;printf(“c=%d\n”,c);[例5.5-1]将输入的两个数中最大的打印出来。[例5.5-2]将输入的两个数先大后小输出。选择结构程序设计表达式真假语句1语句2二.嵌套的if语句在if语句中的“语句”处又是if语句,则称为if语句的嵌套。一般格式如下:if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句4在嵌套的if语句中,人们习惯将它写成锯齿形,以增加程序的可读性。选择结构程序设计内层的if语句如果是简化的if,如:if(表达式1)if(表达式2)语句1else语句2从最内层开始,else总是与它上面最近的、未曾配对的if配对。选择结构程序设计{}?[例5.6]求分段函数的值main(){intx,y;scanf(“%d”,&x);printf(“y=%d\n”,y);}选择结构程序设计0)(x10)(x00)(x1yif(x0)y=-1;elseif(x==0)y=0;elsey=1;if(x=0)if(x0)y=-1;elsey=0;elsey=1;y=-1;if(x=0)if(x0)y=1;elsey=0;y=0;if(x=0){if(x0)y=1;}elsey=-1;√三.else-if格式if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3……else语句n它实际上是if语句在else中有if嵌套的格式变化。如:选择结构程序设计if(x0)y=-1;elseif(x==0)y=0;elsey=1;[例5.7]输入考试成绩的等级,打印出百分制分数段(A等:85分以上,B等:70~84,C等:60~69,D等:60分以下)。main(){chargrade;scanf(“%d”,&grade);if(grade==’A’)printf(“85~100\n”);elseif(grade==’B’)printf(“70~84\n”);elseif(grade==’C’)printf(“60~69\n”);elseif(grade==’D’)printf(“60\n”);elseprintf(“Error\n”);}选择结构程序设计四.条件运算符语法格式为:表达式1?表达式2:表达式3如:max=(ab)?a:b;与if(ab)max=a;elsemax=b;等价条件运算符的优先级仅仅高于赋值运算符和逗号运算符,低于所有其它运算符。[例5.8]判断键盘输入的一个字符是否为大写字母,如果是则转换为小写字母,否则不转换。输出处理后的字符。选择结构程序设计条件5.4switch语句语法格式:switch(表达式){case常量1:语句组1case常量2:语句组2……case常量n:语句组ndefault:语句组n+1}选择结构程序设计=常量1=常量2=常量n表达式语句组1语句组2语句组n语句组n+1yyynnn如在例5.7中的if部分可以考虑写成下面的switch语句:switch(grade){case’A’:printf(“85~100\n”);case’B’:printf(“70~84\n”);case’C’:printf(“60~69\n”);case’D’:printf(“60\n”);default:printf(“Error\n”);}若grade=‘C’,则输出:60~6960Error选择结构程序设计改进的switch语句语法格式:switch(表达式){case常量1:语句组1;break;case常量2:语句组2;break;……case常量n:语句组n;break;default:语句组n+1}选择结构程序设计=常量1=常量2=常量n表达式语句组1语句组2语句组n语句组n+1yyynnn改进后的switch语句:switch(grade){case’A’:printf(“85~100\n”);break;case’B’:printf(“70~84\n”);break;case’C’:printf(“60~69\n”);break;case’D’:printf(“60\n”);break;default:printf(“Error\n”);}若grade=‘C’,则输出:60~69选择结构程序设计多个case可以共用一组执行语句。如:switch(grade){case’A’:case’B’:case’C’:printf(“60~100\n”);break;case’D’:printf(“60\n”);break;default:printf(“Error\n”);}选择结构程序设计5.5综合应用举例[例5.9]在例2.9的计算机随机出一道两位数的加法题中,当用户回答完毕后,给出适当的评语。分析:重设随机种子:randomize();产生10~99之间的随机数:a=random(90)+10;可能的运行情况:计算:23+72=96↙回答错误,您输入的数是:96要看答案吗(y/n)?y↙正确答案是:95选择结构程序设计[例5.10]输入年、月,输出该月有多少天。分析:每年的1、3、5、7、8、10、12月有31天;4、6、9、11月有30天;2月闰年有29天,平年有28天。年号能被4整除,但不能被100整除,或者年号能被400整除的年均是闰年。设年份为year,判断year是否为闰年:if(year%4==0&&year%100!=0||year%400==0)选择结构程序设计本章小结:本章介绍了关系运算符和逻辑运算符,由它们构成的表达式通常是在if语句和循环语句中作为条件来使用的。if语句和switch语句的使用,使程序的执行变成了“跳跃”式执行了,实际上是对程序中的某些部分实现的选择运行。这种选择是必要的,可以根据不同的情况选择合适的代码进行处理。在理解了问题的要求后,如果需要这样的选择,就应该使用选择结构的语句。第5章作业5.1输入一个整数,如果为正数或零,计算该数的平方;如果为负数,计算该数的立方。5.2输入一个整数,如果:(1)当为正数时,如果它即是3又是7的倍数,输出“是3、7的倍数”;否则输出“不是3、7的倍数”。(2)当为负数或零时,显示“不是正整数”。5.3输入3个数,将其中最大数输出。5.4输入3个字母,按字母表顺序从小到大输出这3个字母。选择结构程序设计5.5输入某学生成绩,若成绩在85分以上,输出verygood,若成绩在60~85分之间,输出good,若成绩低于60分,输出nogood。5.6输入班号,输出该班学生的人数。用switch语句完成。5.7输入一个人的出生日期和今天的日期,计算他的周岁。如今天是2003年10月11日,王明1984年10月5日出生,他19岁;李丽1984年10月20日出生,她18岁。班号919293949596人数303230303225选择结构程序设计

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功