第六章循环结构练习题参考答案.docx

上传人:b****5 文档编号:6688423 上传时间:2023-01-09 格式:DOCX 页数:17 大小:21.17KB
下载 相关 举报
第六章循环结构练习题参考答案.docx_第1页
第1页 / 共17页
第六章循环结构练习题参考答案.docx_第2页
第2页 / 共17页
第六章循环结构练习题参考答案.docx_第3页
第3页 / 共17页
第六章循环结构练习题参考答案.docx_第4页
第4页 / 共17页
第六章循环结构练习题参考答案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

第六章循环结构练习题参考答案.docx

《第六章循环结构练习题参考答案.docx》由会员分享,可在线阅读,更多相关《第六章循环结构练习题参考答案.docx(17页珍藏版)》请在冰豆网上搜索。

第六章循环结构练习题参考答案.docx

第六章循环结构练习题参考答案

第六章 循环控制

【题6.1】设有程序段

intk=10;

while(k=10)k=k-1;

则下面描述中正确的是。

A)while循环执行10次B)循环是无限循环

C)循环体语句一次也不执行D)循环体语句执行一次

【题6.2】设有以下程序段

intx=0,s=0;

while(!

x!

=0)s+=++x;

printf(“%d”,s);

则。

A)运行程序段后输出0B)运行程序段后输出1

C)程序段中的控制表达式是非法的D)程序段执行无限次

【题6.3】下面程序段的运行结果是。

x=y=0;

while(x<15)y++,x+=++y;

printf(“%d,%d”,y,x);

A)20,7B)6,12C)20,8D)8,20

【题6.4】下面程序段的运行结果是。

intn=0;

while(n++<=2);printf(“%d”,n);

A)2B)3C)4D)有语法错

【题6.5】下面程序的功能是将从键盘输入的一对数,由小到大排序输出。

当输入一对相等数时结束循环,请选择填空。

#include

main()

{

inta,b,t;

scanf(“%d%d”,&a,&b);

while(【1】)

{

if(a>b)

{t=a;a=b;b=t;}

printf(“%d,%d”\n”,a,b);

scanf(“%d%d”,&a,&b);

}

}

【1】A)!

a=bB)a!

=bC)a==bD)a=b

【题6.6】下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。

#include

main()

{intm=0,n=0;

charc;

while((【1】)!

=‘\n’)

{

if(c>=‘A’&&c<=‘Z’)m++;

if(c>=‘a’&&c<=‘z’)n++;

}

printf(“%d\n”,m

【2】);

}

【1】A)c=getchar()B)getchar()C)scanf(“%c”,c)

【2】A)n:

mB)m:

nC)m:

mD)n:

n

【题6.7】下面程序的功能是将小写字母变成对应大写字母后的第二个字母。

其中y变成A,z变成B。

请选择填空。

#include

main()

{charc;

while((c=getchar())!

=‘\n’)

{

if(c>=‘a’&&c<=‘z’)

{【1】;

if(c>‘Z’)

【2】;

}

printf(“%c”,c);

}

}

【1】A)c+=2B)c-=32C)c=c+32+2D)c-=30

【2】A)c=‘B’B)c=‘A’C)c-=26D)c=c+26

【题6.8】下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。

#include

main()

{inta,max=0;

scanf(“%d”,&a);

while(【1-B】)

{if(max

scanf(“%d”,&a);

}

printf(“%d”,max);

}

【1】A)a==0B)aC)!

a==1D)!

a

【题6.9】下面程序的运行结果是。

#include

main()

{intnum=0;

while(num<=2)

{

num++;

printf(“%d\n”,num);

}

}

A)1B)1C)1D)1

222

33

4

【题6.10】若运行以下程序时,从键盘输入2473<回车>,则下面程序的运行结果是。

#include

main()

{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

【题6.11】C语言中while和do-while循环的主要区别是。

A)do-while的循环体至少无条件执行一次

B)while的循环控制条件比do-while的循环控制条件严格

C)do-while允许从外部转到循环体内

D)do-while的循环体不能是复合语句

【题6.12】以下能正确计算1×2×3×…×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);

【题6.13】以下程序段。

x=-1;

do

{x=x*x;

}while(!

x);

A)是死循环B)循环执行二次

C)循环执行一次D)有语法错误

【题6.14】以下描述中正确的是。

A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号

C)在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作

D)do-while循环中,根据情况可以省略while

【题6.15】下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。

#include

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)n/100C)n/10D)n%10

【题6.16】等比数列的第一项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=a+aD)a+=sum

【2】A)n=n-2B)n=nC)n++D)n-=1

【题6.17】下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。

请选择填空。

#include

main()

{

inti=0,j,k;

do{i++;k=316-13*i;}while(【1】);

j=k/11;

printf(“316=13*%d+11*%d”,i,j);

}

【1】A)k/11B)k%11C)k/11==0D)k%11==0

【题6.18】下面程序的运行结果是。

#include

main()

{

inty=10;

do{y--;}while(--y);

printf(“%d\n”,y--);

}

A)-1B)1C)8D)0

【题6.19】若运行以下程序时,从键盘输入ADescriptor表示回车),则下面程序的运行结果是。

#include

main()

{

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=7B)v0=8,v1=4,v2=8

C)v0=11,v1=4,v2=11D)v0=12,v1=4,v2=12

 

【题6.20】下面程序的运行结果是。

#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

【题6.21】下面有关for循环的正确描述是。

A)for循环只能用于循环次数已经确定的情况

B)for循环是先执行循环体语句,后判断表达式

C)在for循环中,不能用break语句跳出循环体

D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

【题6.22】对for(表达式1;;表达式3)可理解为。

A)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)

C)for(表达式1;表达式1;表达式3)

D)for(表达式1;表达式3;表达式3)

【题6.23】若i为整型变量,则以下循环执行次数是。

for(i=2;i==0;)printf(“%d”,i--);

A)无限次B)0次C)1次D)2次

【题6.24】以下for循环的执行次数是。

for(x=0,y=0;(y=123)&&(x<4);x++)

A)是无限循环B)循环次数不定C)执行4次D)执行3次

【题6.25】以下不是无限循环的语句为。

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;

【题6.26】下面程序段的运行结果是。

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

【题6.27】下面程序段的运行结果是。

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

【题6.28】下列程序段不是死循环的是。

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;

【题6.29】执行语句for(i=1;i++<4;);后变量i的值是。

A)3B)4C)5D)不定

【题6.30】有一堆零件(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(【1】)

printf(“%d”,i);

}

A)i%9=5B)i%9!

=5C)(i-5)%9!

=0D)i%9==5

【题6.31】下面程序的功能是计算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

【题6.32】下面程序的功能是计算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

【题6.33】下面程序的运行结果是。

#include

main()

{

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)#&

&&

&*&*

&

*

【题6.34】下面程序段的功能是计算1000!

的末尾含有多少个零。

请选择填空。

(提示:

只要算出1000!

中含有因数5的个数即可)

for(k=0,i=5;i<=1000;i+=5)

{

m=i;

while(【1】){k++;m=m/5;}

}

【1】A)m%5=0B)m=m%5==0C)m%5==0D)m%5!

=0

【题6.35】下面程序的功能是求算式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

【题6.36】下面程序是输出一个正整数等差数列的前十项,此数列前四项之和及之积分别是26和880,请选择填空。

#include

main()

{

inta,d,i,s,f,x;

for(a=1;a<30;a++)/*a是第一项,预估a的可能取值范围*/

for(d=1;【1】;d++)/*d是公差,预估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)a+i*dB)i*dC)a+(i+1)*dD)a+d

【题6.37】下面程序的运行结果是。

#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

【题6.38】以下正确的描述是。

A)continue语句的作用是结束整个循环的执行

B)只能在循环体内和switch语句体内使用break语句

C)在循环体内使用break语句或continue语句的作用相同

D)从多层循环嵌套中退出时,只能使用goto语句

【题6.39】下面程序段。

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个非负整数

【题6.40】下面程序段。

x=3;

do{

y=x--;

if(!

y){printf(“x”);continue;}

printf(“#”);

}while(1<=x<=2);

A)将输出##B)将输出##*

C)是死循环D)含有不合法的控制表达式

【题6.41】以下是死循环的程序段是。

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--);

【题6.42】以下描述正确的是。

A)goto语句只能用于退出多层循环

B)switch语句中不能出现continue语句

C)只能用continue语句来终止本次循环

D)在循环中break语句不能独立出现

【题6.43】与下面程序段等价的是。

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;

}

【题6.44】下面程序的功能是将从键盘输入的偶数写成两个素数之和。

请选择填空。

#include

#include

main()

{

inta,b,c,d;

scanf(“%d”,&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=【1】;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);

}

}

【1】A)a+bB)a-bC)a*bD)a/b

 

【题6.45】下面程序的运行结果是。

#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’);

printf(“k=%d\n”,k);

}

A)k=3B)k=4C)k=2D)k=0

参考解答:

1.B2.B3.D4.C5.B6.A,A7.D,C8.9.10.

11.12.13.14.15.16.17.18.19.20.

21.22.23.24.25.26.27.28.29.30.

31.32.33.34.35.36.37.38.39.40.

41.C42.C43.C44.B45.B

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1