C语言 习题五参考答案
时间:2025-07-03
时间:2025-07-03
第五章参考答案
一、单项选择题 (P111)
1、要判断char型变量m是否是数字字符,可以使用下列表达式( ) A.0<=m&&m<=9 B.’0’<=&&m<=’9’
C.”0”<=m&&m<=”9” D.前面三个答案均是错误的 2、if语句的控制条件( )。
A)只能用关系表达式 B)只能用关系表达式或逻辑表达式 C)只能用逻辑表达式 D)可以是任何表达式 3、以下程序的输出结果是( )。
main()
{float x=2,y; if(x<0)y=0;
else if(x<5&&!x)y=1/(x=2); else if(x<10)y=1/x;
else y=10; printf(“%f\n”,y); }
A)0.000000 B)0.250000 C)0.500000 D)10.000000 4、执行以下程序段后,a,b,c的值分别是( )。
int a,b=100,c,x=10,y=9; a=(--x= =y++)?—x:++y; if(x<9) b=x++;c=y;
A)9,9,9 B)8,8,10 C)9,10,9 D)1,11,10 5、执行下列程序段后,x、y和z的值分别是( )。
int x=10,y=20,z=30; if(x>y)z=x; x=y; y=z;
A)10,20,30 B)20,30,30 C)20,30,10 D)30,30,20 6、以下程序的输出结果是( )。
main()
{int w=4,x=3,y=2,z=1;
if(x>y&&(z==w))printf(“%d\n”,(w<x?w:z<y?z:x)); else printf(“%d\n”,(w>x?w:z>y?z:x)); }
A)1 B)2 C)3 D)4
7、下面的程序段所表示的数学函数关系是( )。
y=-1;
if(x!=0){if(x>0)y=1;} else y=0;
A) B)1 (x>0))83□4 )。
main()
{int a,b,s;
scanf(“%d%d”,&a,&b); s=a; if(a<b)s=b;
s*=s;
printf(“%d\n”,s); }
A)14 B)16 C)18 D)20
9、若a和b均是整型变量,以下正确的switch语句是( )。
A)switch(a/b) B)switch(a*a+b*b);
{case 1:case 3.2;y=a+b;reak; {case 3:
case 0:case 5:y=a-b; case 1:y=a+b;break; } case 0:y=b-a;} C)switch a D)switch(a+b)
{default :x=a+b; {case10:x=a+b;break;
case 10:y=a-b;break; case 11:y=a-b; case 11:y=a*b;break;} }
二、填空题(p115)
1.if语句控制表达式只有其值为______时表示逻辑“真”,其值为__________表示逻辑“假”。(非0 0)
2.if(!k)a=3;语句中的!k可以改写为________,使其功能不变。(k==0) 3. 表达“若|x|>4,则输出x,否则输出error!”,的if语句是______________。
if ( x>4 || x<-4 ) printf("%d",x); else printf("error!"); 或: x>4 || x<-4 ? printf("%d",x) : printf("error!"); 或:if(abs(x)>4)printf("%d",x); else printf("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 = 00000000 = 00000000 0(0为假) = 1
6. 下列程序段的输出是__________。(k=1)
int i=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|a>12) /* 结果:a=014时 输出:10!*/
if(011&10==a)printf(“%d! \n”,a); /* a=0x14时 输出:Right!11 */ else printf(“Right!%d\n”,a); 8. 以下程序的输出是__________。($$$ a=0)
main()
{int a=0,b=0,c=0;
if(a=b+c)printf(“*** a=%d\n”,a); else printf(“$$$ a=%d\n”,a); }
9.下列程序的输出结果是__________。(a=2,b=1)
#include “stdio.h” main()
{int x=1,y=0,a=0,b=0; switch(x)
{case 1:switch(y)
{case 0:a++;break; case 1:b++;break;
}
case 2:a++;b++;
}
printf(“a=%d,b=%d\n”,a,b); }
10、 若下列程序执行后t的值为4,则执行时输入a,b的值的范围是______________。
(0<a<b)
#include “stdio.h” main()
{int a,b,s=1,t=1;
scanf(“%d,%d”,&a,&b);
if(a>0)s+=1;/*(2)要s=2,则必须a>0 */
/*(3)要使t=4,则此if-else不能被执行,即a<b */ else t=2*s; /*(1)要t=4,则必s=2 */ printf(“s=%d,t=%d\n”,s,t); }
三、编程题
1、 以下程序求3个整数中的最小值,程序是否有错?若有错,请改正。(p116) main()
{int a,b,c,t;
scanf("%d,%d",&a,&b); if(a>b)&&(a>c)
if b<c printf("min=%d\n",b); else printf(min=%d\n",c)
if(a<b)&&(a<c)printf("min=%c\n",a); }
修改程序如下: main( )
{ int a, b, c;
scanf ("%d,%d,%d", &a, &b, &c); if ( ( a>b)&&(a>c) )
if (b<c) printf("min=%d\n",b); else printf("min=%d\n",c);
else if ( (a<b)&&(a<c) ) printf("min=%d\n",a);
else printf("min=%d\n",b<c?b:c);
}
/*p116_1A.c */ main()
{int a,b,c;
scanf("%d%d%d",&a,&b,&c); if(a>b)
if(b>c)printf("%d\n",c); else printf("%d\n",b);
else if(a>c)printf("%d\n",c); else printf("%d\n",a); }
/*p115_1b.c */ main()
{int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d\n",a<b&&a<c?a:b<c?b:c); }< …… 此处隐藏:5703字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:超越竞争的品牌价值