一、填空题
1.{a=3;c+=a-b;}在语法上被认为是 条语句。空语句的形式是 。
【答案】- {}
2.若float x;以下程序段的输出结果是 。
x=5.16894;
printf("%f\n",(int)(x*1000+0.5)/(float)1000);
【答案】5.169000
【说明】本题要注意数据类型转换与数据输出类型。
3.以下程序段中输出语句执行后的输出结果依次是 、 和 。
int i=-200, j=2500;
printf(" (1) %d %d",i,j);
printf(" (2) i=%d,j=%d\n" ,i,j);
printf(" (3) i=%d\n j=%d\n",i,j);
【答案】 (1)-200 2500
(2)i=-200,j=2500
(3)i=-200
j=2500
【说明】本题需要注意“\n”这个转义字符。
4.当运行以下程序时,在键盘上从第一列开始输入9876543210<回车>(此处<回车>代表回车),则程序的输出结果是 。
main()
{ int a; float b,c;
scanf(" %2d%3f%4f",&a,&b,&c );
printf(" \na=%d,b=%f,c=%f\n",a,b,c );
}
【答案】a=98,b=765.000000,c=4321.000000
【说明】scanf语句中指定了a、b、c的输入格式,使a=98,b=765.000000,c=4321.000000。
5.下面程序的输出结果是 。
main()
{ int x=10,y=3,z;
printf("%d\n",z=(x%y,x/y));
}
【答案】3
【说明】在printf函数中,指定的输出数据类型是整型。
6.若double a,b,c;要求为a、b、c分别输入10、20、30。输入序列为 (□表示空格)
□10.0□□20.0□□30.0<回车>
则正确的输入语句是 。
【答案】scanf("%lf%lf%lf",&a,&b,&c );
7.若有int a=10,b=20,c=30;则能使a和c的值互换的语句是 。
【答案】b=c;
c=a;
a=b;
【说明】在类似的交换数值题目中,要记得用第三个数来暂存数据。
8.if(!k)a=3;语句中的!k可以改写为 ,使其功能不变。
【答案】k==0
9.表达“若|x|>4,则输出x,否则输出:error!”的if语句是 。
【答案】if (x>4) printf("%d",x);
else if(x<-4) printf("%d",x);
else printf("error!");
10.能正确表达“当x的值是[1,10]或[200,210]范围内的奇数时,输出x”的if语句是 。
【答案】if (x>=1&&x<=10)
if (x%2==0) printf("%d",x);
if (x>=200&&x<=210)
if (x%2==0) printf("%d",x);
【说明】本题需要使用if嵌套来先判断x是不是属于规定的取值范围,再判断是不是奇数。
11.下列程序段的输出是 。
int i=0,k=100,j=4;
if(i+j)k=(i=j)?(i=1):(i=i+j);
printf("k=%d\n",k);
【答案】k=1
12.下列程序的输出结果是 。
#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 );
while语句里的if
}
【答案】a=2,b=1
【说明】程序运行过程中x、y、a、b支依次为:
x=1, y=0, a=0, b=0
x=1, y=0, a=1, b=0
x=1, y=0, a=2, b=1
13.若下列程序执行后t的值为4,则执行时输入a,b的值范围是 。
#include "stdio.h"
main()
{ int a, b, s=1, t=1;
scanf("%d, %d", &a, &b );
if(a>0)s+=1;
if(a>b)t+=s;
else if(a==b) t=5;
else t=2*s;
printf("s=%d, t=%d\n", s,t);
}
【答案】a<b且a>0
【说明】要输出4,必需要执行“t=2*s”这条语句。
14.以下程序的输出是 。
main()
{ int a=0, b=0, c=0;
if(a=b+c)printf ("***a=%d\n", a );
else printf("$$$ a=%d\n", a );
}
【答案】$$$ a=0
【说明】注意yi语句括号中是“=”而不是“==”。
15.以下while循环执行的次数是 。
k=0;while(k=10) k=k+1;
【答案】0
【说明】由于k=0,不符合while语句的执行条件,所以执行次数为0。
16.下列程序段的执行结果是 。
int j;
for(j=10;j>3;j--)
{ if(j%3) j--; --j; j--;
printf("%d ",j); }
【答案】7 4
17.执行以下程序后,输出是 。
#include "math.h"
main()
{ float x,y,z;
x=3.6; y=2.4; z=x/y;
while(1)
if(fabs(z)>1) {x=y; y=x; z=x/y;}
else break;
printf("%f\n",y);}
【答案】2.400000
【说明】fabs函数的作用是求浮点数的绝对值。另外,程序中先执行了x=y语句,所以即使执行了y=x,y的值还是2.400000。
18.以下程序的输出结果是 。
main()
{ int y=10;
for( ; y>0; y--)
{ if (y%3) continue;
printf ("%4d",--y);
}
}
【答案】8 5 2
19.以下循环语句执行 次循环。
int i,j;
for(i=5; i ; i--)
for(j=0;j<4;j++) { … }
【答案】20
【说明】这是一个二重循环。第一重循环到i=0为止,第二重循环到j=3为止。总循环次数为5×4=20次。
20.下面程序的功能是从键盘上输入若干个学生的学习成绩,统计并输出最高成绩和最低成
绩,当输入为负数时结束输入。
main()
{ float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while( )
{ if(x>amax) amax=x;
if( ) amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
【答案】x>=0;
x<amin;
【说明】第一个空的作用是判断X是否为负数,如果为负就中断输入。第二个空的作用是出最小数。
二、选择题
1.若int a,b,c;则为它们输入数据的正确输入语句是( )。
A.read(a,b, c ); B.scanf(" %d%d%d" ,a,b,c );
C.scanf(" %d%d%d" ,&a,%b,%c ); D.scanf(" %d%d%d",&a,&b,&c );
【答案】D
2.若float a,b,c;要通过语句:scanf(" %f %f %f",&a,&b,&c);分别为a,b,c输入10,22,33。以下不正确的输入形式是( )。
A.10 B.10.0,22.0,33.0
22
33
C.10.0 22.0 D.10 22
33.0 33
【答案】B
【说明】“,”scanf语句中认定的数据分隔符,并且本题也没有设定“,”为数据分隔符。
3.执行语句:printf(" |%10.5f|\n",12345.678);的输出结果是( )。
A.|2345.67800| B.|12345.6780| C.|12345.67800| D.|12345.678|
【答案】C
【说明】本题设定了显示五位小数。如果不足五位,程序会自动在末尾补0。
4.若有以下程序段,其输出结果是( )。
int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf(" %d,%d,%d\n",a,b,c );
A.3,0,-10 B.0,0,5 C.-10,3,-10 D.3,0,3
【答案】B
5.若a为int类型,且a=125,执行下列语句后的输出结果是( )。
printf("%d,%o,%x\n",a,a+1,a+2)
A.125,175,7D B.125,176,7F C.125,176,7D D.125,175,2F
【答案】B
【说明】printf语句中可以指定输出类型。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论