一、填空题
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小时内删除。