scanf("%d",&a);
}
printf("%d",max);
}
①(A)a==0(B)a(C)!
a==1(D)!
a
12、下面程序的运行结果是()
#include
voidmain()
{
intnum=0;
while(num<=2)
{
num++;
printf("%d\n",num);
}
}
(A)1(B)1
2
(C)1
2
3
(D)1
2
3
4
13、若运行以下程序时,从键盘输入2473〈CR〉(〈CR〉表示回车),则下面程序的运行结果是()
#include
voidmain()
{
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)668977(B)668966(C)66778777(D)6688766
14、C语言中while和do-while循环的主要区别是()
(A)do-while的循环体至少无条件执行一次
(B)while的循环控制条件比do-while的循环控制条件严格
(C)do-while允许从外部转到循环体内
(D)do-while的循环体不能是复合语句
15、以下能正确计算1×2×3×...×10的程序段是()
(A)do{i=1;s=1;
s=s*i;
i++;
}while(i<=10);
(B)do{i=1;s=0;
s=s*i;
i++;
}while(i<=10);
(C)i=1;s=1;
do{s=s*i;
i++;
}while(i<=10);
(D)i=1;s=0;
do{s=s*i;
i++;
}while(i<=10);
16、以下程序段()
x=-1;
do{x=x*x;}while(!
x);
(A)是死循环(B)循环执行二次(C)循环执行一次(D)有语法错误
17、以下描述中正确的是()
(A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
(B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
(C)在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作
(D)do-while循环中,根据情况可以省略while
18、若有如下语句
intx=3;
do{printf("%d\n",x-=2);}while(!
(--x));
则上面程序段()
(A)输出的是1(B)输出的是1和-2(C)输出的是3和0(D)是死循环
19、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。
①()②()
#include
voidmain()
{intn,sum=0;
n=2345;
do{
sum=sum+①;
n=②;
}while(n);
printf("sum=%d",sum);}
①(A)n%10(B)(n%10)*(n%10)(C)n/10(D)(n/10)*(n/10)
②(A)n/1000(B)n/100(C)n/10(D)n%10
20、下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。
请选择填空。
①()②()
#include
voidmain()
{
longintnum;
scanf("%ld",&num);
do{if(①)printf("%ld",num);
scanf("%ld",&num);
}while(②);
}
①(A)num%100/10==3(B)num/100%10==3(C)num%10/10==3(D)num/10%10==3
②(A)!
num(B)num>0==0(C)!
num==0(D)!
num!
=0
21、等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择填空。
①()②()
#include
voidmain()
{
inta,q,n,sum;
a=1;q=2;n=sum=0;
do{①;
++n;a*=q;
}while(sum<100);
②;
printf("%d\n",n);}
①(A)sum++(B)sum+=a(C)sum*=a(D)a+=sum
②(A)n=n-2(B)n=n(C)n++(D)n-=1
22、下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。
请选择填空。
①()
#include
voidmain()
{
inti=0,j,k;
do{i++;k=316-13*i;}while(①);
j=k/11;
printf("316=13*%d+11*%d",i,j);
}
①(A)k/11(B)k%11(C)k/11==0(D)k%11==0
23、下面程序的运行结果是()
#include
voidmain()
{
inty=10;
do{y--;}while(--y);
printf("%d\n",y--);
}
(A)-1(B)1(C)8(D)0
24、若运行以下程序时,从键盘输入ADescriptor〈CR〉(〈CR〉表示回车),则下面程序的运行结果是()
#include
voidmain()
{charc;
intv0=0,v1=0,v2=0;
do{
switch(c=getchar())
{
case'a':
case'A':
case'e':
case'E':
case'i':
case'I':
case'o':
case'O':
case'u':
case'U':
v1+=1;
default:
v0+=1;v2+=1;
}
}while(c!
='\n');
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}
(A)v0=7,v1=4,v2=7(B)v0=8,v1=4,v2=8(C)v0=11,v1=4,v2=11(D)v0=12,v1=4,v2=12
25、下面程序的运行结果是()
#include
voidmain()
{inta=1,b=10;
do{b-=a;a++;}while(b--<0);
printf("a=%d,b=%d\n",a,b);}
(A)a=3,b=11(B)a=2,b=8(C)a=1,b=-1(D)a=4,b=9
26、下面有关for循环的正确描述是()
(A)for循环只能用于循环次数已经确定的情况
(B)for循环是先执行循环体语句,后判断表达式
(C)在for循环中,不能用break语句跳出循环体
(D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
27、对for(表达式1;;表达式3)可理解为()
(A)for(表达式1;0;表达式3)(B)for(表达式1;1;表达式3)
(C)for(表达式1;表达式1;表达式3)(D)for(表达式1;表达式3;表达式3)
28、若i为整型变量,则以下循环执行次数是()
for(i=2;i==0;)printf("%d",i--);
(A)无限次(B)0次(C)1次(D)2次
29、以下for循环的执行次数是()
for(x=0,y=0;(y=123)&&(x<4);x++);
(A)是无限循环(B)循环次数不定(C)执行4次(D)执行3次
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;
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=27(B)x=12,y=13(C)x=15,y=14(D)x=y=27
32、下面程序段的运行结果是()
for(x=3;x<6;x++)printf((x%2)?
("**%d"):
("##%d\n"),x);
(A)**3
##4
**5
(B)##3
**4
##5
(C)##3
**4##5
(D)**3##4
**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;
34、执行语句for(i=1;i++<4;);后变量i的值是()
(A)3(B)4(C)5(D)不定
35、有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。
下面程序是求这堆零件总数,请选择填空。
()
#include
voidmain()
{inti;
for(i=100;i<200;i++)
if((i-2)%4==0)
if(!
((i-3)%7))
if(①)
printf("%d",i);}
(A)i%9=5(B)i%9!
=5(C)(i-5)%9!
=0(D)i%9==5
36、下面程序的功能是计算1至50中是7的倍数的数值之和,请选择填空。
①()
#include
voidmain()
{inti,sum=0;
for(i=1;i<=50;i++)
if(①)sum+=i;
printf("%d",sum);}
(A)(int)(i/7)==i/7(B)(int)i/7==i/7(C)i%7=0(D)i%7==0
37、下面程序的功能是计算1至10之间的奇数之和及偶数之和。
请选择填空。
①()②()
#include
voidmain()
{inta,b,c,i;
a=c=0;
for(i=0;i<=10;i+=2)
{a+=i;
①;
c+=b;}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",②);}
①(A)b=i--(B)b=i+1(C)b=i++(D)b=i-1
②(A)c-10(B)c(C)c-11(D)c-b
38、下面程序的运行结果是()
#include
voidmain()
{inti;
for(i=1;i<=5;i++)
switch(i%5)
{case0:
printf("*");break;
case1:
printf("#");break;
default:
printf("\n");
case2:
printf("&");}
}
(A)#&&&*
(B)#&
&
&*
(C)#
&
&
&
*
(D)#&
*
39、下面程序的运行结果是()
#include
voidmain()
{intx,i;
for(i=1;i<=100;i++)
{
x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d",x);}
}
(A)3981(B)4284(C)2668(D)2870
40、下面程序段的功能是计算1000!
的末尾含有多少个零。
请选择填空。
(提示:
只要算出1000!
中含有因数5的个数即可)①()
for(k=0,i=5;i<=1000;i+=5)
{m=i;
while(①){k++;m=m/5;}
}
(A)m%5=0(B)m=m%5==0(C)m%5==0(D)m%5!
=0
41、下面程序的功能是求算式xyz+yzz=532中x,y,z的值(其中xyz和yzz分别表示一个三位数),请选择填空。
①()②()
#include
voidmain()
{intx,y,z,i,result=532;
for(x=1;x<10;x++)
for(y=1;y<10;y++)
for(①;z<10;z++)
{i=100*x+10*y+z+100*y+10*z+z;
if(②)printf("x=%d,y=%d,z=%d\n",x,y,z);}
}
①(A)z=x(B)z=1(C)z=0(D)z=y
②(A)i/result==1(B)i=result(C)i!
=result(D)i==result
42、下面程序是输出一个正整数等差数列的前十项,此数列前四项之和及之积分别是26和880,请选择填空。
①(C)②(A)
#include
voidmain()
{inta,d,i,s,f,x;/*a是第一项*/
for(a=1;a<30;a++)
for(d=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",②);}
printf("\n");}
①(A)d<=a(B)空(C)d<=5(D)d②(A)a+i*d(B)i*d(C)a+(i+1)*d(D)a+d
43、下面程序的运行结果是()
#include
voidmain()
{inti,b,k=0;
for(i=1;i<=5;i++)
{b=i%2;
while(b-->=0)k++;}
printf("%d,%d",k,b);}
(A)3,-1(B)8,-1(C)3,0(D)8,-2
44、以下正确的描述是()
(A)continue语句的作用是结束整个循环的执行
(B)只能在循环体内和switch语句体内使用break语句
(C)在循环体内使用break语句或continue语句的作用相同
(D)从多层循环嵌套中退出时,只能使用goto语句
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个非负整数
46、下面程序段()
x=3;
do{y=x--;
if(!
y){printf("x");continue;}
printf("#");}while(1<=x<=2);
(A)将输出##(B)将输出##*(C)是死循环(D)含有不合法的控制表达式
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--);
48、以下描述正确的是()
(A)goto语句只能用于退出多层循环(B)switch语句中不能出现continue语句
(C)只能用continue语句来终止本次循环(D)在循环中break语句不能独立出现
49、与下面程序段等价的是()
for(n=100;n<=200;n++)
{if(n%3==0)continue;
printf("%4d",n);}
(A)