您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C语言习题五参考答案
第五章参考答案一、单项选择题(P111)1、要判断char型变量m是否是数字字符,可以使用下列表达式()A.0=m&&m=9B.’0’=&&m=’9’C.”0”=m&&m=”9”D.前面三个答案均是错误的2、if语句的控制条件()。A)只能用关系表达式B)只能用关系表达式或逻辑表达式C)只能用逻辑表达式D)可以是任何表达式3、以下程序的输出结果是()。main(){floatx=2,y;if(x0)y=0;elseif(x5&&!x)y=1/(x=2);elseif(x10)y=1/x;elsey=10;printf(“%f\n”,y);}A)0.000000B)0.250000C)0.500000D)10.0000004、执行以下程序段后,a,b,c的值分别是()。inta,b=100,c,x=10,y=9;a=(--x==y++)?—x:++y;if(x9)b=x++;c=y;A)9,9,9B)8,8,10C)9,10,9D)1,11,105、执行下列程序段后,x、y和z的值分别是()。intx=10,y=20,z=30;if(xy)z=x;x=y;y=z;A)10,20,30B)20,30,30C)20,30,10D)30,30,206、以下程序的输出结果是()。main(){intw=4,x=3,y=2,z=1;if(xy&&(z==w))printf(“%d\n”,(wx?w:zy?z:x));elseprintf(“%d\n”,(wx?w:zy?z:x));}A)1B)2C)3D)47、下面的程序段所表示的数学函数关系是()。y=-1;if(x!=0){if(x0)y=1;}elsey=0;A)-1(x0)B)1(x0)y=0(x=0)y=-1(x=0)1(x0)0(x0)C)0(x0)D)-1(X0)y=-1(x=0)y=1(x=0)1(x0)0(x0)8、若执行以下程序时从键盘上输入3□4,则输出结果是()。main(){inta,b,s;scanf(“%d%d”,&a,&b);s=a;if(ab)s=b;s*=s;printf(“%d\n”,s);}A)14B)16C)18D)209、若a和b均是整型变量,以下正确的switch语句是()。A)switch(a/b)B)switch(a*a+b*b);{case1:case3.2;y=a+b;reak;{case3:case0:case5:y=a-b;case1:y=a+b;break;}case0:y=b-a;}C)switchaD)switch(a+b){default:x=a+b;{case10:x=a+b;break;case10:y=a-b;break;case11:y=a-b;case11:y=a*b;break;}}二、填空题(p115)1.if语句控制表达式只有其值为______时表示逻辑“真”,其值为__________表示逻辑“假”。(非00)2.if(!k)a=3;语句中的!k可以改写为________,使其功能不变。(k==0)3.表达“若|x|4,则输出x,否则输出error!”,的if语句是______________。if(x4||x-4)printf(%d,x);elseprintf(error!);或:x4||x-4?printf(%d,x):printf(error!);或:if(abs(x)4)printf(%d,x);elseprintf(error!);4.能正确表达“当x的值是[1,10]或[200,210]范围内的奇数时,输出x”的if语句是________。if((x%2!=0)&&((x=1&&x=10)||(x=200&&x=210)))5、已知a=15,b=240;则表达式(a&b)&b||b的结果为__________。(1)a:00001111&b:11110000=00000000&b:11110000=000000000(0为假)||b:111100001(非0为真)=16.下列程序段的输出是__________。(k=1)inti=0,k=100,j=4;if(i+j)k=(i=j)?(i=1):(i=i+j);printf(“k=%d\n”,k);7.下列程序段当a的值为014和0x14时的执行结果分别是________。if(a=0xa|a12)/*结果:a=014时输出:10!*/if(011&10==a)printf(“%d!\n”,a);/*a=0x14时输出:Right!11*/elseprintf(“Right!%d\n”,a);8.以下程序的输出是__________。($$$a=0)main(){inta=0,b=0,c=0;if(a=b+c)printf(“***a=%d\n”,a);elseprintf(“$$$a=%d\n”,a);}9.下列程序的输出结果是__________。(a=2,b=1)#include“stdio.h”main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}10、若下列程序执行后t的值为4,则执行时输入a,b的值的范围是______________。(0ab)#include“stdio.h”main(){inta,b,s=1,t=1;scanf(“%d,%d”,&a,&b);if(a0)s+=1;/*(2)要s=2,则必须a0*/if(ab)t+=s;/*(3)要使t=4,则此if-else不能被执行,即ab*/elseif(a==b)t=5;elset=2*s;/*(1)要t=4,则必s=2*/printf(“s=%d,t=%d\n”,s,t);}三、编程题1、以下程序求3个整数中的最小值,程序是否有错?若有错,请改正。(p116)main(){inta,b,c,t;scanf(%d,%d,&a,&b);if(ab)&&(ac)ifbcprintf(min=%d\n,b);elseprintf(min=%d\n,c)if(ab)&&(ac)printf(min=%c\n,a);}修改程序如下:main(){inta,b,c;scanf(%d,%d,%d,&a,&b,&c);if((ab)&&(ac))if(bc)printf(min=%d\n,b);elseprintf(min=%d\n,c);elseif((ab)&&(ac))printf(min=%d\n,a);elseprintf(min=%d\n,bc?b:c);}/*p116_1A.c*/main(){inta,b,c;scanf(%d%d%d,&a,&b,&c);if(ab)if(bc)printf(%d\n,c);elseprintf(%d\n,b);elseif(ac)printf(%d\n,c);elseprintf(%d\n,a);}/*p115_1b.c*/main(){inta,b,c;scanf(%d%d%d,&a,&b,&c);printf(%d\n,ab&&ac?a:bc?b:c);}/*p116_1c.c*/main(){inta,b,c;scanf(%d%d%d,&a,&b,&c);if(ab&&ac)printf(%d\n,a);if(ba&&bc)printf(%d\n,b);if(ca&&cb)printf(%d\n,c);}2、给出一个5位数,按逆序输出它的各位数值。如输入12345,请输出54321。方法1、main(){longa;intk;scanf(%ld,&a);printf(%ld\n,a);loop:if(a!=0){k=a%10;printf(%d,k);a=a/10;gotoloop;}}方法2、方法3:main()main(){intn;{longn,s=0;printf(Inputn:(0--32767\n);scanf(%ld,&n);scanf(%d,&n);while(n0)if(n10000){printf(%d,n%10);n=n/10;}{s=s*10+n%10;if(n1000){printf(%d,n%10);n=n/10;}n=n/10;if(n100){printf(%d,n%10);n=n/10;}}if(n10){printf(%d,n%10);n=n/10;}printf(s=%ld\n,s);printf(%d\n,n);}}3、有一个函数:分别用:(1)简单if语句,(2)嵌套的if语句,(3)if…else语句,(4)switch语句编写程序,要求输入x的值,输出y的值。(1)用简单的if结构(2)用嵌套的if结构main()main(){intx,y;{intx,y;scanf(%d,&x);printf(Pleaseinputx:-5-----10\n);if(x0&&x-5)y=x;scanf(%d,&x);if(x5&&x=0)y=x-1;if(x5)if(x=5&&x10)y=x+1;if(x0)printf(%d,%d\n,x,y);{if(x-5)y=x;}}elsey=x-1;elseif(x10)y=x+1;printf(%d,%d\n,x,y);}(3)用if-else分支结构main(){intx,y;scanf(%d,&x);if(x0&&x-5)y=x;elseif(x5&&x=0)y=x-1;elseif(x=5&&x10)y=x+1;printf(%d,%d\n,x,y);}(4)用switch()结构(4)改main()main(){intx,y,k;{intx,y;printf(Pleaseinputx:-5-----10\n);doscanf(%d,&x);scanf(“%d”,&x);if(x0)k=-1;while(x=-5||x=10);x(-5x0)y=x-1(0=x5)x+1(5=x10)elsek=x/5;switch((x+5)/5)switch(k){case0:y=x;break;{case1:y=x+1;break;case1:y=x-1:break;case0:y=x-1;break;case2:y=x+1;case-1:y=x;break;}}printf(“x=%,y=%d\n”,x,y);printf(%d,%d\n,x,y);}}4、编写程序输入一位学生的生日(年:y0、月:m0、日:d0);并输入当前的日期(年:y1、月:m1、日:d1);输出改学生的实足年龄。(P116)main(){inty0,m0,d0,y1,m1,d1,age;printf(Pleaseinputcurrentday:\n);scanf(%d,%d,%d,&y1,&m1,&d1);printf(Pleaseinputbirthday:\n);scanf(%d,%d,%d,&y0,&m0,&d0);age=y1-y0;if(m1m0)age--;elseif(m1==m0&&d1d0)age--;printf(age=%d\n,age);}5、编写程序,输入3个整数,判断它们是否能构成三角形,若能构成三角形,则输出三角形的类型(等边、等腰或一般三角形)(P117)main(){inta,b,c;printf(Pleaseinputa,b,c:\n);scanf(%d,%d,%d,&a,&b,&c);/*输入三角形的三条边*/if(a+bc&&a+cb&&b+ca)/*判断两边之和大于第三边*/if(a==b&&b==c)/*判断等边三角形*/p
本文标题:C语言习题五参考答案
链接地址:https://www.777doc.com/doc-2907825 .html