scanf("%d",&a);
}
printf("%d",max);}
A)a==0B)aC)a==1D)!
a
【题5.12】下面程序的运行结果是。
#include
main()
{intnum=0;
while(num<=2)
{num++;
printf("%d\n",num);
}
}
A)1B)1C)1D)1
222
33
4
【题5.13】若运行以下程序时,从键盘输入2473(表示回车),则下面程序的运行结果是。
#include"stdio.h"
{intc;
while((c=getchar())!
='\n')
switch(c-'2')
{case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
printf("\n");
}
A)668977B)668966C)66778777D)6688766
【题5.14】以下程序的功能是计算一个整数的各位数字之和,请选择填空。
intn,m=1;
scanf(“%d”,&n);
for(;n!
=0;)
{m【】;
n/=10;
}
printf(“%d”,m);
A)+=n%10B)=n%10
C)+=nD)=n/10
【题5.15】以下能正确计算10!
的程序段是。
A)do{i=1;s=1;B)do{i=1;s=0;
s=s*i;s=s*i;
i++;i++;
}while(i<=10);}while(i<=10);
C)i=1;s=1;D)i=1;s=0;
do{s=s*i;do{s=s*i;
i++;i++;
}while(i<=10);}while(i<=10);
【题5.16】以下程序段。
x=-1;
do
{x=x*x;}while(!
x);
A)是死循环B)循环执行两次
C)循环执行一次D)有语法错误
【题5.17】以下描述中正确的是。
A)while,do-while,for循环中的循环体语句都至少被执行一次
B)do-while循环中,在while(表达式)后面的分号可以省略
C)while循环体中,一定要有能使while后面表达式的值变为零("假")的操作
D)do-while循环中,根据情况可以省略while。
【题5.18】若有语句如下,则程序段的输出是。
intx=3;
do{printf("%d",x-=2);}while(!
(--x));
A)1B)1和-2C)3和0D)死循环
【题5.19】下面程序的功能是计算正整数2345的各位数字平方和。
#include"stdio.h"
main()
{intn,sum=0;
n=2345;
do{sum=sum+【1】;
n=【2】;
}while(n);
printf("sum=%d",sum);}
【1】A)n%10B)(n%10)*(n%10)
C)n/10D)(n/10)*(n/10)
【2】A)n/1000B)b/100
C)n/10D)n%10
【题5.20】下面程序是从键盘输入学号,然后输出学号中百位数是3的学号,输入0时结束循环。
请选择填空。
#include
main()
{longintnum;
scanf("%ld",&num);
do
{if(【1】)printf("%ld",num);
scanf("%ld",&num);
}while(【2】);
}
【1】A)num%100/10==3B)num/100%10==3
C)num%10/10==3D)num/10%10==3
【2】A)!
numB)num>0==0
C)!
num==0D)!
num!
=0
【题5.21】等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择填空。
#include
main()
{inta,q,n,sum;
a=1;q=2;n=sum=0;
do
{【1】;
++n;a*=q;
}while(sum<100);
【2】;
printf("%d\n",n);
}
【1】A)sum++B)sum+=aC)sum*=aD)a+=sum
【2】A)n=n-2B)n=nC)n++D)n-=1
【题5.22】下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。
请选择填空。
#include
main()
{inti=0,j,k;
do{i++;k=316-13*i;}while();
j=k/11;
printf("316=13*%d+11*%d",i,j);
}
A)k/11B)k%11C)k/11==0D)k/11==0
【题5.23】下面程序的运行结果是。
#include
main()
{inty=10;
do{y--;}while(--y);
printf("%d\n",y--);
}
A)-1B)1C)8D)0
【题5.24】若运行以下程序时,从键盘输入<回车>,则下面程序的运行结果是。
#include
main()
{charc;
intv1=0,v2=0;
do{
switch(c=getchar())
{case'a':
v1+=1;
case't':
case'T':
v2+=1;
default:
v1+=1;v2+=1;
}
}while(c!
='\n');
printf("v1=%d,v2=%d\n",v1,v2);
}
A)v1=3,v2=4B)v1=4,v2=4
C)v1=6,v2=8D)v1=7,v2=9
【题5.25】下面程序的运行结果是。
#include
main()
{inta=1,b=10;
do
{b-=a;a++;}while(b--<0);
printf("a=%d,b=%d\n",a,b);
}
A)a=3,b=11B)a=2,b=8C)a=1,b=-1D)a=4,b=9
【题5.26】下面有关for循环的正确描述是。
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体可以包括多条语句,但必须用花括号括起来
【题5.27】对for(表达式1;;表达式3)可理解为。
A)for(表达式1;0;表达式3)
B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)
D)for(表达式1;表达式3;表达式3)
【题5.28】若i为整型变量,则以下循环执行次数是。
for(i=2;i==0;)printf("%d",i--);
A)无限次B)0次C)1次D)2次
【题5.29】以下for循环的执行次数是。
for(x=0,y=0;(y=123)&&(x<4);x++);
A)是无限循环B)循环次数不定C)4次D)3次
【题5.30】以下不是无限循环的语句为。
A)for(y=0,x=1;x>++y;x=i++)i=x;
B)for(;;x++=i);
C)while
(1){x++;}
D)for(i=10;;i--)sum+=i;
【题5.31】下面程序段的运行结果是。
for(y=1;y<10;)y=((x=3*y,x+1),x-1);
printf("x=%d,y=%d",x,y);
A)x=27,y=27B)x=12,y=13C)x=15,y=14D)x=y=27
【题5.32】下面程序段的运行结果是。
for(x=3;x<6;x++)printf((x%2)?
("**%d"):
("##%d\n")),x);
A)**3B)##3C)##3D)**3##4
##4**4**4##5**5
**5##5
【题5.33】以下不是无限循环的语句为。
A)inti=100;
while
(1)
{i=i%100+1;
if(i>100)break;}
B)for(;;);
C)intk=0;
do{++k;}while(k>=0);
D)ints=36;
while(s);--s;
【题5.34】执行语句for(i=1;i++<4;);后变量的值为。
A)3B)4C)5D)不定
【题5.35】有一堆零件(100到200之间),如果分成4个零件一组则多出2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多出5个零件。
下面程序是求这堆零件总数,请选择填空。
#include
main()
{inti;
for(i=100;i<200;i++)
if((i-2)%4==0)
if(!
((i-3)%7))
if(【】)
printf("%d",i);
}
A)i%9=5B)i%9!
=5C)(i-5)%9!
=0D)i%9==5
【题5.36】下面程序的功能是计算1~50中是7的倍数的数值之和,请选择填空。
#include
main()
{inti,sum=0;
for(i=1;i<=50;i++)
if(【1】)sum+=i;
printf("%d",sum);
}
A)(int)(i/7)==i/7B)(int)i/7==i/7C)i%7!
=0D)i%7==0
【题5.37】下面程序的功能是计算1~10之间的奇数之和和偶数之和。
请选择填空。
#include
main()
{inta,b,c,i;
a=c=0;
for(i=0;i<=10;i+=2)
{a+=i;
【1】;
c+=b;
}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",【2】);
}
【1】A)b=i--B)b=i+1C)b=i++D)b=i-1
【2】A)c-10B)cC)c-11D)c-b
【题5.38】下面程序的运行结果是。
#include
main()
{inti;
for(i=1;i<=5;i++)
switch(i%5)
{case0:
printf("*");break;
case1:
printf("#");break;
default:
printf("\n");break;
case2:
printf("&");
}
}
A)#&&*B)#&C)#D)#&
&&
&*&*
&
*
【题5.39】下面程序的运行结果是。
#include
main()
{intx,i;
for(i=1;i<=100;i++)
{x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%3d",x);
}
}
A)3981B)4284C)2668D)2870
【题5.40】下面程序段的功能是计算1000!
的末尾含有多少个零。
请选择填空。
(提示:
只要计算出1000!
中含有因子5的个数即可)
for(k=0,i=5;i<=1000;i+=5)
{m=i;
while(){k++;m=m/5;}
A)m%5=0B)m=m%5==0C)m%5==0D)m%!
=0
【题5.41】下面程序的功能是求算式xyz+yzz=532中x,y,z的值(其中xyz和yzz分别表示一个三位数),请选择填空。
#include
main()
{intx,y,z,i,result=532;
for(x=1;x<10;x++)
for(y=1;y<10;y++)
for(【1】;z<10;z++)
{i=100*x+10*y+z+100*y+10*z+z;
if(【2】)
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
}
【1】A)z=xB)z=1C)z=0D)z=y
【2】A)i/result==1B)i=resultC)i!
=resultD)i==result
【题5.42】下面程序是对输出一个正整数等差数列的前十项,此数列前四项之和及积分别是26和880,请选择填空。
#include
main()
{inta,d,i,s,f,x;
for(a=1;a<=6;a++)
for(d=1;【1】;d++)
{s=0;f=1;x=a;
for(i=1;i<=4;i++)
{s=s+x;
f=f*x;
x=x+d;
}
if(s==26&&f==880)
for(i=0;i<10;i++)
printf("%3d",【2】;
}
printf(“\n”);
}
【1】A)d<=aB)空C)d<=5D)d【2】a+i*dB)i*dC)a+(i+1)*dD)a+d
【题5.43】下面程序的运行结果是。
#include
main()
{inti,b,k=0;
for(i=1;i<=5;i++)
{b=i%2;
while(b-->=0)k++;
}
printf("%d,%d",k,b);
}
A)3,-1B)8,-1C)3,0D)8,-2
【题5.44】以下正确的描述是。
A)continue语句的作用是结束整个循环的执行。
B)只能在循环体内和switch语句体内使用break语句。
C)在循环体内使用break语句或continue语句的作用相同。
D)从多层循环嵌套中退出时,只能使用goto语句。
【题5.45】下面程序段。
for(t=1;t<=100;t++)
{scanf("%d",&x);
if(x<0)continue;
printf("%3d",t);
}
A)当x<0时整个循环结束
B)x>=0时什么也不输出
C)printf函数永远也不执行
D)最多允许输出100个非负整数
【题5.46】下面程序段【】
x=3;
do
{y=x--;
if(!
y){printf(“x”);continue;}
printf(“#”);
}while(1<=x<=2);
A)将属出##
B)将输出##*
C)是死循环
D)含有不合发的控制表达式
【题5.47】以下是死循环的程序段是【】
A)for(i=1;;)
{if(++i%2==0)continue;
if(++i%3==0)break;
}
B)i=32767;
do{if(i<0)break;}while(++i);
C)for(i=1;;)if(++i<10)continue;
D)i=1;
while(i--);
【题5.48】以下描述正确的是【】
A)goto语句只能用于退出多层循环
B)switch语句中不能出现continue语句
C)只能用continue语句来终止本次循环
D)在循环中break语句不能独立出现
【题5.49】与下面程序段等价的是【】
for(n=100;n<=200;n++)
{if(n%3==0)continue;
printf(“%4d”,n);
}
A)for(n=100;(n%3&&n<=200;n++)printf(“%4d”,n);
B)for(n=100;(n%3)||n<=200;n++)printf(“%4d”,n);
C)for(n=100;n<=200;n++)if(n%3!
=0)printf(“%4d”,n);
D)for(n=100;n<=200;n++)
{if(n%3)printf(“%4d”,n);
elsecontinue;
break;
}
【题5.50】下面程序的功能是将从键盘输入的偶数写成两个素数之和。
请选择填空【】
#include
#include
main()
{inta,b,c,d;
scanf(“%4d”,&a);
for(b=3;b<=a/2;b+=2)
{for(c=2;c<=sqrt(b);c++)
if(b%c==0)break;
if(c>sqrt(b))d=【】;
elsebreak;
for(c=2;c<=sqrt(d);c++)
if(d%c==0)break;
if(c>sqrt(d))printf(“%d=%d+%d\n”,a,b,d);
}
}
A)a+b
B)a-b
C)a*b
D)a/b
【题5.51】下面程序的运行结果是【】
#include
main()
{intk=0;charc=’A’;
do
{switch(c++)
{case‘A’:
k++;break;
case’B’:
k--;
case’C’:
k+=2;break;
case’D’:
k=k%2;continue;
case’E’:
k=k*10;break;
default:
k=k/3;
}
k++;
}while(c<’G’);
pintf(“k=%d\n”,k);
}
A)k=3
B)k=4
C)k=2
D)k=0
【题5.52】若运行以下程序时,从键盘输入3.62.4<回车>,则下面程序的运行结果是【】
#include
#include
main()
{floatx,y,z;
scanf(“%f%f”,&x&y);
z=x/y;
while
(1)
if(fabs(z)>1.0){x=y;y=z;z=x/y}
elsebreak;
printf(“%f\n”,y);
}
A)1.500000
B)1.600000
C)2.000000
D)2.400000
【题5.53】下面程序的运行结果是【】
#include
main()
{inta,b;
for