C语言第五章-选择结构程序设计(习题册答案)

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

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

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

资源描述

第五章选择结构程序设计基础练习(A)一、填空题1、关系表达式的运算结果是逻辑值。C语言没有逻辑型数据,以1代表“真”,以0代表“假”。2、逻辑运算符!是单目运算符,其结合性是由右结合性。3、C语言提供的三种逻辑运算符是&&、||、!。其中优先级最高的为!,优先级最低的为||。4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。系统最终以0和非0来判定它们属于“真”或“假”。5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。6、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式xz||yz。7、条件“2x3或x-10”的C语言表达式是x-10||x2&&x3。8、判断char型变量ch是否为大写字母的正确表达式是(ch=‘A’)&&(ch=‘Z’)。9、当a=3,b=2,c=1时,表达式f=abc的值是0。10、当a=5,b=4,c=2时,表达式ab!=c的值是1。11、已知A=7.5,B=2,C=3.6,表达式AB&&CA||AB&&!CB的值是0。12、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是1。13、有intx,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为1。14、有intx,y,z;且x=3,y=-4,z=5,则以下表达式的值为1。!(xy)+(y!=z)||(x+y)&&(y-z)15、有inta=3,b=4,c=5,x,y;,则以下表达式的值为0。!(x=a)&&(y=b)&&016、if(!k)a=3;语句中的!k可以改写为k==0,使其功能不变。二、选择题1、逻辑运算符两侧运算对象的数据类型(D)。A)只能是0或1B)只能是0或非0正数C)只能是整型或字符型数据D)可以是任何类型的数据2、以下关于运算符优先顺序的描述中正确的是(C)。A)关系运算符算术运算符赋值运算符逻辑与运算符B)逻辑与运算符关系运算符算术运算符赋值运算符C)赋值运算符逻辑与运算符关系运算符算术运算符D)算术运算符关系运算符赋值运算符逻辑与运算符3、下列运算符中优先级最高的是(B)。A)B)+C)&&D)!=4、为判断字符变量c的值不是数字也不是字母时,应采用下述表达式(D)。A)c=48||c=57&&c=65||c=90&&c=97||c=122B)!(c=48||c=57&&c=65||c=90&&c=97||c=122)C)c=48&&c=57||c=65&&c=90||c=97&&c=122D)!(c=48&&c=57||c=65&&c=90||c=97&&c=122)5、能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否则为假”的表达式是(C)。A)(x=1)&&(x=100)&&(x=200)&&(x=300)B)(x=1)||(x=100)||(x=200)||(x=300)C)(x=1)&&(x=100)||(x=200)&&(x=300)D)(x=1)||(x=100)&&(x=200)||(x=300)6、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是(D)。A)‘x’&&‘y’B)x=yC)x||y+z&&y-zD)!((xy)&&!z||1)7、已知x=43,ch=‘A’,y=0;则表达式(x=y&&ch‘B’&&!y)的值是(C)。A)0B)语法错C)1D)“假”8、设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=ab)&&(n=cd)后n的值为(B)。A)1B)2C)3D)49、以下不正确的if语句形式是(C)。A)if(xy&&x!=y);B)if(x==y)x+=y;C)if(x!=y)scanf(“%d”,&x)elsescanf(“%d”,&y);D)if(xy){x++;y++;}10、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是(B)。if(xy)z=x;x=y;y=z;A)x=10,y=20,z=30B)x=20,y=30,z=30C)x=20,y=30,z=10D)x=20,y=30,z=2011、以下if语句语法正确的是(B)。A)if(x0)printf(“%f”,x)elseprintf(“%f”,-x);B)B)if(x0){x=x+y;printf(“%f”,x);}elseprintf(“%f”,-x);C)C)if(x0){x=x+y;printf(“%f”,x);};elseprintf(“%f”,-x);D)D)if(x0){x=x+y;printf(“%f”,x)}elseprintf(“%f”,-x);12、请阅读以下程序:main(){inta=5,b=5,c=0;if(a==b+c)printf(“***\n”);elseprintf(“$$$\n”);}以下程序(C)。A)有语法错不能通过编译B)可以通过编译但不能通过连接C)输出***D)输出$$$三、写出下列程序的运行结果1、若运行时输入:2回车,则以下程序的运行结果是2ndclasspostageis14p。#includestdio.hvoidmain(void){charClass;printf(“Enter1for1stclasspostor2for2ndpost”);scanf(“%c”,&Class);if(Class==‘1’)printf(“1stclasspostageis19p”);elseprintf(“2ndclasspostageis14p”);}2、若运行时输入:4.4回车,则以下程序的运行结果是SellingPrice(0.30)$5.72。#includestdio.hvoidmain(void){floatCostPrice,SellingPrice;printf(“EnterCostPrice$:”);scanf(“%f”,&CostPrice);if(CostPrice=5){SellingPrice=CostPrice+CostPrice*0.25;printf(“SellingPrice(0.25)$%6.2f”,SellingPrice);}else{SellingPrice=CostPrice+CostPrice*0.30;printf(“SellingPrice(0.30)$%6.2f”,SellingPrice);}}3、以下程序的运行结果是F。main(){if(2*2==52*2==4)print(“T”);elseprintf(“F”);}能力提高(B)一、选择题1、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是(D)。A)A%2==1B)!(A%2==0)C)!(A%2)D)A%22、下列运算符中优先级最低的(A),优先级最高的是(C)。A)?:B)&&C)+D)!=3、请阅读以下程序:main(){inta=5,b=0,c=0;if(a=b+c)printf(“***\n”);elseprintf(“$$$\n”);}以下程序(D)。A)有语法错不能通过编译B)可以通过编译但不能通过连接C)输出***D)输出$$$4、以下程序的运行结果是(C)。main(){intm=5;if(m++5)printf(“%d\n”,m);elseprintf(“%d\n”,m--);}A)4B)5C)6D)7二、根据程序的功能,将以下程序补充完整1、以下程序对输入的四个整数,按从小到大的顺序输出。请在内填入正确内容。main(){intt,a,b,c,d;printf(“inputa,b,c,d:”)scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(ad){t=a;a=d;d=t;}if(bc){t=b;b=c;c=t;}if(bd){t=b;b=d;d=t;}if(cd){t=c;c=d;d=t;}printf(“%d,%d,%d,%d”,a,b,c,d);}三、编程:1、试编程判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no。2、编制程序要求输入整数x、y和z,若x2+y2+z2大于1000,则输出x2+y2+z2千位以上的数字,否则输出三数之和。3、编写程序,输入三角型的三条边长,求其面积。注意:对于不合理的边长输入要输出数据错误的提示信息。1、参考答案main(){intx;if(x%5==0&&x%7==0)printf(“yes”);elseprintf(“no”);}2、参考答案main(){intx,y,z,a,b;scanf(“%d%d%d”,&x,&y,&z);a=x*x+y*y*z*z;if(a1000){b=a/1000;printf(“%d”,b);}elseprintf(“%d”,x+y+z);}3、参考答案#includemath.hmain(){floata,b,c,s,area;scanf(“%f,%f,%f”,&a,&b,&c);if(a+bc&&b+ca&&a+cb){s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area=%7.2f\n”,area);}elseprintf(“bunengzhuchengsanjiaoxing\n”);}第2讲基础练习(A)一、填空题1、在if语句中又包含一个或多个if语句称为if语句的嵌套。2、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与其之前最近的未配对的if配对。如果if与else数目不一样,为实现设计者的企图,可以加花括号关系。3、条件运算符是C语言中唯一的一个三目运算符,其结合性为从右至左。4、假设条件表达式的格式为:表达式1?表达式2:表达式若表达式2和表达式3的类型不同,此时条件表达式的值的类型为二者中较高的类型5、在switch语句中,switch后面括弧内的“表达式”,可以为任何类型。6、若a=1,b=2,则表达式ab?a:b+1的值是3。7、若w=1、x=2、y=3、z=4,则条件表达式wx?w:yz?y:z的值是1。8、若有以下if语句:if(ab)min=a;elsemin=b;可用条件运算符来处理的等价式子为min=(ab)?a:b;。9、若x=1,y=2,z=3,则表达式(xy?x:y)==z++的值是0。10、设有变量定义:inta=5,c=4;则(--a==++c)?--a:c++的值是5,此时c的存储单元的值为6。二、判断题1、在switch语句中,每一个的case常量表达式的值可以相同。(错)2、在switch语句中,各个case和default的出现次序影响执行结果。(对)3、在switch语句中,多个case可以共用一组执行语句。(对)4、条件表达式能取代一般if的语句。(错)5、case后的常量表达式类型一定与表达式类型匹配。(对)三、写出以下程序的运行结果1、main()-1{inta=2,b=3,c;c=a;if(ab)c=1;elseif(a==b)c=0;elsec=-1;printf(“%d\n”,c);}2、main()200{inta,b,c;ints,w,t;s=w=t=0;a=-1;b=3;c=3;if(c0)s=a+b;if(a=0){if(b0)if(c=0)w=a-b;}elseif(c0)w=a-b;elset=c;printf(“%d%d%d”,s

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

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

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

×
保存成功