第四课选择结构程序设计

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

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

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

资源描述

第四课选择结构程序设计计算机科学与技术学院C培训讲义钟良骥1.关系表达式和逻辑表达式的复习(1)运算符的功能(2)运算符的优先级(3)运算符的正确使用2.if控制语句的常见形式(1)单分支选择结构:if(表达式)语句如果表达式的值为真,则执行其后的语句,否则不执行该语句。【例】输入一个数如果该数大于等于0,则输出它的平方根,如果小于0,则不做任何处理。(2)双分支选择结构:if(表达式)语句1;else语句2;如果表达式的值为真,则执行语句1,否则执行语句2【例】输入一个数,如果该数大于等于0,则输出它的平方根,如果小于0,则输出数据出错信息“dataerror”。(3)多分支选择结构if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3…elseif(表达式m)语句melse语句n首先判断表达式1的值,当为真时,则执行对应的语句1。然后跳到整个if语句之外继续执行程序。如果表达式1的值为假,则继续判断表达式2的值,依次类推。若所有的表达式都不为真,则执行语句n,然后继续执行后续程序。【例】从键盘上输入一个百分制成绩,输出相应的等级。90分以上为“A”,80~90分为“B”,60~79分为“C”,60分以下为“D”。(4)if语句的嵌套语句表达式假(0)真(非0)单分支if语句的执行过程语句1表达式假(0)真(非0)图4.2双分支if语句的执行过程语句2第四课选择结构程序设计计算机科学与技术学院C培训讲义钟良骥在上述3种结构中,当if(表达式)或else后面的语句本身又是一个if语句时,就形成了if语句的嵌套。if(表达式)if(表达式1)语句1_1else语句1_2如:if(score=80)if(score=90)printf(A);elseprintf(B);elseif(score=60)printf(C);elseprintf(D);使用if语句的嵌套时要注意以下几点:在嵌套内的if语句可以是前面讲的三种if语句形式。if语句的嵌套可以是两层甚至是多层,这时要特别注意if与else配对的规则。3.switch语句根据一个表达式的值,选择多个分支,因此也称为分情况语句或开关语句。(1)其一般形式为:switch(表达式){case常量表达式1:语句组;[break;]case常量表达式2:语句组;[break;]......case常量表达式n:语句组;[break;][default:语句组;[break;]]}(2)其中:表达式的值可以是整型或字符型;常量表达式必须是常量,不能是变量,仅代表入口地址,表示当表达式的值等于常量表达式,所执行其后的语句组。如果没有任何一个case后面的“常量表达式”的值与“表达式”的值相同,则执行default后面的语句(组)。若default在最后,就跳出switch语句。若default语句在中间,则直到最后遇到break语句时,才跳出switch语句。(3)使用switch语句时应注意以下几点:表达式的值可以是整型或字符型。default可以省略,也可以放在任何位置,但是建议一般放在最后面。若default放在中间时,执行完default语句组后,并不一定跳出switch语句,必须遇到break语句时,才跳出switch语句。每个case后面“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象(即对表达式的同一值,有两种或两种以上的执行方案)。Ascore=90假score=80score=602CBD真真真假假假第四课选择结构程序设计计算机科学与技术学院C培训讲义钟良骥case后面的“常量表达式”仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,直到遇到break语句,就跳出switch语句。各case先后次序,不影响程序执行结果。多个case子句,可共用同一语句(组)。多分支if结构和switch结构都可以用来实现多条分支,多分支if结构用来实现两条、三条分支情况比较方便,若包括有三条以上分支情况时,使用switch结构较为方便。但是,有些问题只能使用多分支if结构来实现,例如要判断一个值是否处在某个区间的情况。4.程序举例【例】编制程序要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位及以上的数字,否则输出两数的和。【例】试编程判断输入的正整数是否既是5又是7的倍数。若是,则输出yes;否则输出no。【例】根据以下分段函数,对输入的每个x值,计算出相应的y值。40402020101000xxxxxy1205.0100xx【例】考察目前银行对整存整取存款不同期限的储蓄利率,计算存入本金和一定期限的存款到期时的利息及利息与本金的和。当前整存整取年息利率参考:(%)半年:2.16一年:2.25二年:2.43三年:2.70五年:2.88【例】编写程序,输入年份和月份,求该月的天数。5.单元习题一、单选题1.逻辑运算符两侧运算对象的数据类型是()。A.只能是0或1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据2.选择出合法的if语句(设intx,a,b,c;)()。A.if(a=b)x++;B.if(a=b)x++;C.if(ab)x++;D.if(a=b)x++;3.能正确表示“当x的取值在[l,10]或[200,210]范围内为真,否则为假”的表达式是()。A.(x=1)&&(x=10)&&(x=200)&&(x=210)B.(x=1)||(x=10)||(x=200)||(x=210)C.(x=1)&&(x=l0)||(x=200)&&(x=210)D.(x=1)||(x=10)&&(x=200)||(x=210)4.判断char型变量ch是否为大写字母的正确表达式是()。第四课选择结构程序设计计算机科学与技术学院C培训讲义钟良骥A.'A'=ch='Z'B.(ch='A')&(ch='Z')C.(ch='A')&&(ch='Z')D.('A'=ch)AND('Z'=ch)5.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与()配对。A.缩排位置相同的ifB.同层之前最近的ifC.同层其之后最近的ifD.同一行上的6.下列运算符中,不属于关系运算符的是()。A.B.=C.==D.!7.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是()。A.A%2==1B.!(A%2==0)C.!(A%2)D.A%28.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是()。#includestdio.hvoidmain(){intx;scanf(%d,&x);if(x++5)printf(%d,x);elseprintf(%d\n,x--);}A.7和5B.6和3C.7和4D.6和49.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是()。if(xy)z=x;x=y;y=z;A.x=l0,y=20,z=30B.x=20,y=30,z=30C.x=20,y=30,z=10D.x=20,y=30,z=2010.若运行时给变量x输入12,则以下程序的运行结果是()。#includestdio.hvoidmain(){intx,y;scanf(%d,&x);y=x12?x+10:x-12;printf(%d\n,y);}A.0B.22C.12D.10二、看程序,写运行结果1.以下程序运行结果是()。#includestdio.hvoidmain(){intx=2,y=-1,z=2;if(xy)if(y0)z=0;第四课选择结构程序设计计算机科学与技术学院C培训讲义钟良骥elsez+=1;printf(%d\n,z);}2.以下程序的执行结果是()。#includestdio.hvoidmain(){inta,b,c,d,x;a=c=0;b=1;d=20;if(a)d=d-10;if(!c)x=15;elsex=25;printf(d=%d\n,d);}3.以下程序的执行结果是()。#includestdio.hvoidmain(){intx=1,y=0;switch(x){case1:switch(y){case0:printf(first\n);break;case1:printf(second\n);break;}case2:printf(third\n);}}4.以下程序在输入5,2之后的执行结果是()。#includestdio.hvoidmain(){ints,t,a,b;scanf(%d,%d,&a,&b);s=1;t=1;if(a0)s=s+1;第四课选择结构程序设计计算机科学与技术学院C培训讲义钟良骥if(ab)t=s+t;elseif(a==b)t=5;elset=2*s;printf(s=%d,t=%d\n,s,t);}5.以下程序的执行结果是()。#includestdio.hvoidmain(){inta=2,b=7,c=5;switch(a0){case1:switch(b0){case1:printf(@);break;case2:printf(!);break;}case0:switch(c==5){case0:printf(*);break;case1:printf(#);break;case2:printf($);break;}default:printf(&);}printf(\n);}6.以下程序运行结果是()。#includestdio.hvoidmain(){intx,y=1;if(y!=0)x=5;printf(\t%d\n,x);if(y==0)x=4;elsex=5;printf(\t%d\n,x);x=1;if(y0)if(y0)x=4;elsex=5;第四课选择结构程序设计计算机科学与技术学院C培训讲义钟良骥printf(\t%d\n,x);}7.以下程序的运行结果是()。#includestdio.hvoidmain(){intx,y=-2,z=0;if((z=y)0)x=4;elseif(y==0)x=5;elsex=6;printf(\t%d\t%d\n,x,z);if(z=(y==0))x=5;x=4;printf(\t%d\t%d\n,x,z);if(x=z=y)x=4;printf(\t%d\t%d\n,x,z);}三、程序填空。1.输入两个整数,按从大到小的顺序输出。#includestdio.hvoidmain(){intx,y,z;scanf(%d,%d,&x,&y);if(){z=x;}printf(%d,%d,x,y);}2.输入一个小写字母,将该字母循环后移5个位置后输出。如‘a’变成‘f’,‘w’变成‘b’。#includestdio.hvoidmain(){charc;c=getchar();if(c='a'&&c='u')elseif(c='v'&&c='z')putchar(c);}第四课选择结构程序设计计算机科学与技术学院C培训讲义钟良骥3.以下程序实现:输入圆的半径r和运算标志m,按照运算标志进行指定运算。其中a代表求面积,c代表求周长,b代表求二者均计算。#includestdio.h#definePI3.14159voidmain(){charm;floatr,c,a;printf(inputmarkacorb&&r\n);scanf(%c%f,&m,&r);if(){a=PI*r*r;printf(areais%f,a);}if(){c=2*PI*r;printf(circleis%f,c);}if(){a=PI*r*r;c=2*PI

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

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

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

×
保存成功