第五章 循环结构

第五章 循环结构
第五章 循环结构

第五章循环结构

5.1 选择题

1.以下程序的输出结果是( )。

main()

{ int n=4;

while (n--)

printf(〞%d〞,--n);

}

A.20

B.31

C.321

D.210 2.以下程序的输出结果是( )。

main()

{int x=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d%d",x--,y);

}

A.10192

B.9876

C.10990

D.101091 3.当执行以下程序段时。

x=-1;

do

{x=x*x;}

while (!x);

A.循环体将执行一次

B.循环体将执行两次

C.循环体将执行无数多次

D.系统将提示有语法错误4.执行以下程序后输出的结果是()。

main()

{ int y=10;

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

printf("%d\n",y--);}

A.-1

B.1

C.8

D.0

5.下面程序的输出结果是()。

main()

{ int x=3,y=6,a=0;

while (x++!=(y-=1))

{a+=1;

if (y

}

printf("x=%d,y=%d,a=%d\n",x,y,a);

}

A.x=4,y=4,a=1

B.x=5,y=5,a=1

C.x=5,y=4,a=3

D.x=5,y=4,a=1

6.若i,j已定义为int类型,则以下程序段中内循环的总的执行次数是()。

for (i=5;i;i--)

for (j=0;j<4;j++)

{…}

A.20

B.24

C.25

D.30

7.请读程序:

#include

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++;break;

}

printf("a=%d,b=%d\n",a,b);

}

上面程序的输出结果是()。

A.a=2,b=1

B.a=1,b=1

C.a=1,b=0

D.a=2,b=2 8.若有以下程序段,w和k都是整型变量

w=k;

LB: if(w==0) goto LE;

w--;

printf(〞*〞);

goto LB;

LE:

则不能与上面程序段等价的循环语句是()。

A. for(w=k;w!=0;w--)

print(〞*〞);

B. w=k;

while(w--!=0)

printf(〞*〞);

w++;

C. w=k;

do {w--;printf(〞*〞);}

while (w!=0);

D.for (w=k;w;--w) printf(〞*〞);

9.下面程序的输出是()。

main()

{

char *s=〞12134211〞;

int k,v1=0,v2=0,v3=0,v4=0;

for (k=0;s[k];k++)

switch(s[k])

{

default:v4++;

case 1:v1++;

case 2:v2++;

csse 3:v3++;

}

printf(〞v1=%d,v2=%d,v3=%d,v4=%d\n〞,v1,v2,v3,v4);

}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=8,v2=8,v3=8,v4=8 10.有以下程序

#include〞stdio.h〞

int abc(int u,int v );

main()

{

int c,a=24,b=16;

c=abc(a,b);

printf(〞%d\n〞,c);

}

int abc (int u,int v)

{

int w;

while (v)

{w=u%v;u=v;v=w;}

return u;

}

输出结果是( )。

A.6

B.7

C.8

D.9 11.在下列选项中,没有构成死循环的程序段是()。

A.int i=100;

while (1)

{

i=i%100+1;

if(i>100) break;

}

B. for ( ;;);

C.int k=1000;

do {++k;}while (k>=10000);

D.int s=36;

while (s) ;

--s;

12.若输入B,以下程序的运行结果为()。

main()

{char grade;scanf("%c",&grade);

switch(grade)

{case'A':printf(">=85.");

case'B':

case'C':printf(">=60.");

case'D':printf("<60.");

default:printf("error.");

}

}

A.>=85.

B.>=60.

C.>=60.<60.error.

D.error.

13.列程序运行的情况是()。

main()

{ int i=1,sum=0;

while(i<10)sum=sum+1;i++;

printf("i=%d,sum=%d",i,sum);

}

A.i=10,sum=9

B.i=9,sum=9

C.i=2,sum=1

D.运行出现错误

14.有以下语句:

i=1;

for(;i<=100;i++) sum+=i;

与以上语句序列不等价的有( )。

A. for(i=1; ;i++) {sum+=i;if(i==100)break;}

B. for(i=1;i<=100;){sum+=i;i++;}

C. i=1;for(;i<=100;)sum+=i;

D. i=1;for(; ;){sum+=i;if(i==100)break;i++;}

15.下面程序的运行结果为()。

main()

{ int n;

for(n=1;n<=10;n++)

{ if(n%3==0)continue;

printf("%d",n);

}

}

A.12457810

B.369

C.12

D.12345678910

16.下面程序的运行结果是()。

main()

{int x,y,z;

x=0;y=z=-1;

x+=-z---y;

printf("x=%d\n",x);

}

A.x=4

B.x=0

C.x=2

D.x=3

17.标有/**/的语句的执行次数是()。

int y,i;

for(i=0;i<20;i++)

{if(i%2==0)continue;

y+=i;/**/

}

A.20

B.19

C.10

D.9

18.在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式。

A.只能用逻辑表达式

B.只能用关系表达式

C.只能用逻辑表达式或关系表达式

D.可用任意表达式

19.在以下给出的表达式中,与do-while(E)语句中的(E)不等价的表达式是()。

A.(!E==0)

B.(E>0||E<0)

C.(E==0)

D.(E!=0)

20.假定所有变量均已正确定义,下列程序段运行后x的值为()。

k1=1;k2=2; k3=3; x=15; if(!k1)x--;else if(k2) if(k3)x=4;else x=3;

A.14

B.4

C.15

D.3

21.执行下面语句的输出为()。

int i=-1;

if(i<=0)printf(“* * * *\n”);

else printf(“% % % % \n”);

A.* * * *

B.% % % %

C.% % % % c

D.有错,执行不正确22.下列程序的输出是()。

#include

main()

{ int i;char c;

for(i=0;i<=5;i++)

{c=getchar();putchar(c);

}

}

程序执行时从第一列开始输入以下数据,代表换行符。

u

w

xsta

A.uwxsta

B.u

C.u

D.u

w w w

x xs xsta

23.下列程序的输出为()。

#include"stdio.h"

main()

{ int i,j,x=0;

for(i=0;i<2;i++)

{x++;

for(j-0;j<=3;j++)

{if(j%2)continue;x++; }

x++;

}

printf("x=%d\n",x);

}

A.x=4

B.x=8

C.x=6

D.x=12

24.下列程序的输出为()。

#include

main()

{int i,j,k=0,m=0;

for(i=0;i<2;i++)

{ for(j=0;j<3;j++)k++;k-=j;}

m=i+j;

printf("k=%d,m=%d\n",k,m);

}

A.k=0,m=3

B.k=0,m=5

C.k=1,m=3

D.k=1,m=5 25.在C语言中,为了结束while语句构成的循环,while后一对圆括号中表达式的值应该为()。

A.0

B.1

C.true

D.非0

26.在C语言中,为了结束由do-while语句构成的循环,while后一对圆括号中表达式的值应为()。

A.0

B.1

C.true

D.非0

27.下列程序的输出为()。

#include

main()

{ int k=0;char c='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("%d\n",k);

}

A.k=3

B.k=4

C.k=2

D.k=0 28.C语言的if语句嵌套时,if与else的配对关系是()。

A. 每个else总是与它上面的最近的if配对

B. 每个else总是与最外的if配对

C. 每个else与if的配对是任意的

D. 每个else总是与它上面的if配对

29.下列程序的输出为()。

#include

main()

{int i=0,j=0,a=6;

if((++i>0)||(++j>0))a++;

printf("i=%d,j=%d,a=%d\n",i,j,a);

}

A.i=0,j=0,a=6

B.i=1,j=1,a=7

C.i=1,j=0,a=7

D.i=0,j=1,a=7 30.下列程序段的输出结果为()。

main()

{int x=3;

do

{ printf("%3d",x-=2);}

while(!(--x));}

A.1

B.3 0

C.1 -2

D.死循环5.2 填空题:

1.当输入19,2,21时下列程序运行的结果是_________。

main()

{int a,b,c,max;

printf("please scan three number a,b,c:\n");

scanf("%d,%d,%d",&a,&b,&c);

max=a;

if(max

if(max

printf("max is:%d",max);

}

2.若输入字母C,程序输出结果为【1】;若输入字符*,程序将【2】。

#include

main()

{char c1,c2;

c1=getchar();

while(c1<97||c1>122)c1=getchar();

c2=c1-32;

printf("%c,%c\n",c1,c2);

}

3.以下程序运行的结果为________。

main()

{ int a,b,c,x,y,z;

a=10;b=2;

c=!(a%b);x=!(a/b);

y=(a=0);

z=(a=0);

printf("%d,%d,%d,%d\n",c,x,y,z);

}

4.若输入4,程序运行结果为【1 】,若输入-4,运行结果为【2 】,若输入10,运行结果为【 3 】.

main()

{ int x,y;

scanf("%d",&x);

if(x<1)

{ y=x;

printf("x=%d,y=x=%d\n",x,y);

}

else if(x<10)

{ y=2*x-1;

printf("x=%d,y=2*x-1=%d\n",x,y);

}

else

{ y=3*x-11;

printf("x=%d,y=3*x-11=%d\n",x,y);

}

}

5.以下程序运行的结果________。

main()

{int i=1,sum=0;

loop:if(i<=10)

{sum+=i;

i++;

goto loop;

}

printf("sum=%d\n",sum);

}

6.以下程序运行的结果________。

main()

{ int x=2,y,z;

x*=3+1;

printf("%d,",x++);

x+=y=z=5;

printf("%d,",x);

x=y==z;

printf("%d\n",x);

}

7.以下程序运行的结果________。

#include

#include

main()

{int i,k,m,n=0;

for(m=1;m<=10;m+=2)

{ if(n%10==0)printf("\n");

k=sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0)break;

if(i>k)

{printf("%2d",m);

n++;

}

}

}

8.如果输入‘1’,‘2’,‘3’,‘4’,程序运行输出的是________。

#include

main()

{char c;

int i,k;

k=0;

for(i=0;i<4;i++)

{while(1)

{ c=getchar();if(c>='0'&&c<='9')break;}

k=k*10+c-'0';

}

printf("k=%d\n",k);

}

9.运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为________。

#include

main()

{int v1=0,v2=0;

char ch;

while ((ch=getchar())!='#')

switch(ch)

{case 'a':

case 'h':

default: v1++;

case '0':v2++;

}

printf("%d,%d\n",v1,v2);

}

10.程序运行结果是_________。

#include

main()

{int i;

for(i=1;i+1;i++)

{ if(i>4){printf("%d\t",i++);break;}

printf("%d\t",i++);

}

}

11.以下程序运行的结果是_________。

#include

main()

{ int a,b;

for(a=1,b=1;a<=100;a++)

{ if(b>=20)break;

if(b%3==1)

{ b+=3;

continue;

}

b-=5;

}

printf("%d\n",a);

}

12.以下程序运行的结果是________。

main()

{int i=1;

while(i<10)

if(++i%3!=1)continue;

else printf("%d",i);

}

13.程序运行的结果是________。

main()

{int n=0;

while(n++<=1)

printf("%d\t",n);

printf("%d\n",n);

}

14.此程序运行时,输入qwert?程序的运行结果是_________。

#include

main()

{char c;

while((c=getchar())!='?')putchar(++c);

}

15.对以下程序:

当输入65 14时,其运行结果是【 1 】。

当输入14 63时,其运行结果是【2 】。

当输入25 125时,其运行结果时【3 】。

#include

main()

{int m,n;

scanf("%d%d",&m,&n);

while(m!=n)

{ while(m>n)m-=n;

while(n>m)n-=m;

}

printf("m=%d\n",m);

}

16.在执行以下程序时,为了使输出结果为t=4,则给a和b输入的值应满足的条件是_______。

main()

{int s,t,a,b;

scanf(〞%d,%d〞,&a,&b);

s=1;t=1;

if(a>0)s=s+1;

if(a>b)t=s+t;

else if (a==b) t=5;

else t=2*s;

printf(〞t=%d\n〞,t);

}

17.求出1000以内的“完全数”。(提示:如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。如:6的因子是1,2,3而6=1+2+3,则6是个“完数”)。

main()

{int i,a,m;

for(i=1;i<1000;i++)

{for(m=0,a=1;a<=i/2;a++)

if(!(i%a)) 【1 】;

if【2】)printf("%4d",i);

}

}

18.鸡问题:100元钱买100只鸡,公鸡一只5元钱,母鸡一只3元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡各多少只?

#include

main()

{int cocks,hens,chicks;

cocks=0;

while(cocks<=19)

{ hens=0;

while(hens<=33)

{ chicks=100.0-cocks-hens;

if(5.0*cocks+3.0*hens+chicks/3.0==100.0)

printf("%d,%d,%d\n",cocks,hens,chicks);

【1】;

}

【2】;

}

}

19.爱因斯坦的阶梯问题:设有一阶梯,每步跨2阶,最后余1阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;每步跨6阶,最后余5阶;只有每步跨7阶时,正好到阶梯顶。问共有多少阶梯。

main()

{int ladders=7;

while(【1 】)ladders+=14;

printf("%d\n",ladders);

}

20.下列程序计算平均成绩并统计90分及以上人数。

main()

{int n,m;

float grade,average;

average=n=m=【1】;

while(【2】)

{ scanf("%f",&grade);

if(grade<0)break;

n++;

average+=grade;

if(grade<90)【3】;

m++;

}

if(n)printf("%.2f%d\n",average/n,m);

}

21.下列程序计算Fibonacci数列:1,1,2,3,5,8,13……的前40项。

main()

{int I;long f1,f2;

【1】;

for(I=0;I<20;I++)

{ printf("%12ld%12ld",f1,f2);

if(I%2)printf("\n");

f1+=f2;

【2】;

}

}

22.下列程序判断一个数是否为素数。

#include

#include

main()

{int I,k,m;

scanf("%d",&m);

k=sqrt(【1】);

for(I=2;I<=k;I++)

if(m%I==0)【2】;

if(【3】)printf("%dyes\n",m);

else printf("%dno\n",m);

}

23.求100~499之间的所有水仙花数,即各位数字的立方和恰好等于该数本身的数。

main()

{int I,j,k,m,n;

for(I=1;【1】;I++)

for(j=0;j<=9;j++)

for(k=0;k<=9;k++)

{【2】;

n=I*I*I+j*j*j+k*k*k;

if(【3】)

printf("%d",m);

}

}

24.从键盘上输入两个整数m和n,求其最大公约数。

main()

{int a,b,num1,num2,temp;

scanf("%d,%d",&num1,&num2);

if(【1】)

{ temp=num1;

num1=num2;

num2=temp;

}

a=num1;b=num2;

while(b!=0)

{ temp=【2】;

a=b;

b=temp;

}

printf("%d,%d",a,num1*num2/a);

}

5.3 答案及部分解题分析

一.选择题答案

1.A

2.D

3.A

4.D

5.D

6.A

7.A 8.C 9.D 10.C 11.C 12.C

13.D 14C 15.A 16.C 17.C 18.D

19.C 20.B 21.A 22.C 23.B 24.B

25.A 26.A 27.B 28.A 29.C 30.C

1.答案:A

解析:此题中判断while后面的条件时,先使用n的值再n--,而打印时打印的是n减1 后的值。所以第一次循环,n=4,执行完后n=2,打印出2;第二次循环,n=2, 经过n—和—n,n变成了0,打印出0;第三次循环时while后面的条件不成立(n=0),所以循环结束。

故输出为20。

2.答案:D

解析:第一次循环时打印的x和y的值都是10,然后x通过x—后变成9,因此第二次循环时x=9, 而“y=++i”执行完后,y变成1,所以第二次循环时打印的x和y的值是9和1 ,然后x—变成8;第三次循环时,x>8条件不成立,循环结束。故D为正确答案。

3.答案:A

解析:对于一个不为0的数,!x即为0,故对于x=-1,while后条件不成立,但是do 循环体是先执行的,故等判断条件时,循环体已执行了一次。

4.答案:D

解析:此题是一个do-while循环,当y值为1时,while后的条件--y变成0,从而循环结束,这时打印出0,然后y--变成-1。故D为正确答案。

5.答案:D

解析:此题中循环进行了1次,但判断了2次,第一次x加1变成4,y减1变成5,a 加1变成1;第2次while后面的条件不成立,因为!=的左边先使用x的值4来判断,右边表达式的值为4,即y由5变成4,判断结束后4变成5,循环结束。故D为正确答案。

6.答案:A

解析:此题中外层for要进行5次,内层for循环要进行4次,所以共进行4*5=20次循环。

二.填空题答案

1.答案:21

2.答案:【1】c C 【2】等待继续输入,直到输入小写字母。

3.答案:1,0,0,1

4.答案:【1】x=4,y=2*x-1=7 【2】x=-4,y=x=-4 【3】x=10,y=3*x-11=19

5.答案:55

6.答案:8,14,1

7.答案:1 3 5 7

8.答案:1234

9.答案:5,5

10.答案:1 3 5

11.答案:8

12.答案:4 7 10

13.答案:1 2 3

14.答案:rxfsu

15.答案:【1】m=1 【2】m=7 【3】m=25 16.答案:0

17.答案:【1】m=m+a 【2】m==i

18.答案:【1】hens++ 【2】cocks++

19.答案:【1】ladders/3!=2||ladders/5!=4||ladders/6!=5

20.答案:【1】0 【2】1 【3】continue 21.答案:【1】f1=1;f2=1 【2】f2+=f1

22.答案:【1】m 【2】break 【3】I>=k+1 23.答案:【1】I<=4 【2】m=I*1000+j*100+k*10 【3】m==n 24.答案:【1】num1>num2 【2】a%b

第五章 循环结构程序设计编程题(参考答案)

第五章循环结构程序设计 1.用for循环语句编程输出1~20之间的所有整数,两数之间以空格分隔。 #include void main() { int i; for(i=1;i<=20;i++) printf("%d ",i); printf("\n"); } 2.用for循环语句编程输出20~1之间的所有整数,两数之间以空格分隔。 #include void main() { int i; for(i=20;i>=1;i--) printf("%d ",i); printf("\n"); } 3.用for循环语句编程输出A~Z之间的所有字符,两字母之间以空格分隔,要求一行输出8个字符。 #include void main() { char c; for(c='A';c<='A'+25;c++) { putchar(c);

printf(" "); } } 4.输出100~200之间所有能被3和7整除的数(每行输出4个数)。#include void main() { int i,j=0; for(i=100;i<=200;i++) { if(i%21==0) { j++; printf("%12d",i); if(j%4==0) printf("\n"); } } } 5.输出1至1000之间所有满足用3除余2、用5除余3、用7除余2的数(要求每行只输出5个数)。 #include void main()

int i,j=0; for(i=1;i<=1000;i++) { if((i%3==2)&&(i%5==3)&&(i%7==2)) { j++; printf("%12d",i); if(j%5==0) printf("\n"); } } } 6.先读入一个正整数n,然后计算并显示前n个偶数的和。例如n为5,则求2+4+6+8+10的值,即sum=30。 #include void main() { int i,n,sum=0; printf("Please enter an integer n:"); scanf("%d",&n); for(i=1;i<=n;i++) sum+=(2*i); printf("sum=%d\n",sum);

第5章 循环结构程序设计作业参考答案

第5章循环结构程序设计作业参考答案 班级学号姓名 【第140页】 5-1、请画出课本里5.6中给出的3个程序段的传统流程图。 (1)程序1: #include int main() { int i,j,n=0; for (i=1;i<=4;i++) for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 printf("%d\t",i*j); } printf("\n"); return 0; } (2)程序2: #include int main() { int i,j,n=0; for (i=1;i<=4;i++) for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 if (i==3 && j==1) break; //遇到第3行第1列,终止内循环 printf("%d\t",i*j); } printf("\n"); return 0; } (3)程序3: #include int main() { int i,j,n=0; for (i=1;i<=4;i++)

for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 if (i==3 && j==1) continue; //遇到第3行第1列,提前结束执行本次内循环体 printf("%d\t",i*j); } printf("\n"); return 0; } (1)程序1流程图(2)程序2流程图(3)程序3流程图 5-3、输入两个正整数m和n,求其最大公约数和最小公倍数。 #include int main()

第五章循环结构

第五章循环结构 一、选择题 1.C语言中while和do_while循环的主要区别是( )。 A.do_while的循环体至少无条件执行一次 B.while的循环控制条件比do_while的循环控制条件严格 C.do_while允许从外部转到循环体内 D.do_while的循环体不能是复合语句 2.以下描述中正确的是( )。 A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C.在do-while循环体中,是先执行一次循环,再进行判断 D.do-while循环中,根据情况可以省略while 3.语句while (!E); 括号中的表达式!E等价于( ) 。 A.E==0 B.E!=1 C.E!=0 D.E==1 4.以下程序的功能是计算:s= 1+1/2+1/3+……+1/10 main() { int n; float s s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是( )。 A.s=1.0; B.for(n=10;n>1;n--) C.s=s+1/n; D.printf("%6.4f\n",s); 5.下面程序段的运行结果是( )。 a=1;b=2;c=2; while(a

第5章循环结构程序设计

第5章循环结构程序设计 通过本章实验作业应达目标 1.熟悉while、for、do_while、break、continue语句的作用与使用规范,能使用while语句、for 语句、do_while语句实现循环结构; 2.掌握循环结构和选择结构之间嵌套、多重循环间嵌套的设计方法。 3.进行算法设计训练,能综合所学控制结构语句解决一般问题。 本章必须上交作业 程序5_1.c、5_2.c、5_3.c、5_5.c、5_6.c、5_7.c、5_8.c、5_11.c上传至http://121.251.227.27:8080/c 1.循环设计 循环是在循环条件为真时重复执行一组循环体语句的控制结构,是计算机解题的一个基本结构。循环控制有两种基本方法:计数法和标志法。 (1)计数器控制的循环 事先准确地知道循环次数,因此设计一个循环控制变量,由变量值来控制循环次数。每循环一次,循环变量的值会递增(增值通常为1或-1),当其值达到终值时结束循环。 (2)标志控制的循环 事先不知道准确的循环次数,由某一目标值标记循环的结束。如,例3-23中以变量sum的值达到标记值1000作为循环的结束,例3-24中就是以键盘输入一个负数为标记结束循环。 2.基本算法 程序设计的首要工作是算法设计,离开了算法也就没有了程序。算法,是指完成某一项工作而采取的方法和步骤,具体到程序设计,是对解题过程的准确而完整的描述,并用一种程序设计语言的来实现。 循环主要用来解决程序设计中两类基本的算法:穷举和迭代。 1. 穷举算法 穷举的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。穷举是一种重复型算法,其核心是设计循环,在循环体中依次测试。 例1 输入两个正整数x和y,求其最大公约数。 #include void main() { int x,y,i,flag; flag=1; /*flag是标志变量,当其值为0时表示已找到公约数*/ printf("Please input two numbers:"); scanf("%d%d",&x,&y); for(i=x

第5章 循环结构 习题

第三章循环结构 3.1 选择题 1.以下程序的输出结果是( )。 main() { int n=4; while (n--) printf(〞%d〞,--n); } A.20 B.31 C.321 D.210 2.以下程序的输出结果是( )。 main() {int x=10,y=10,i; for(i=0;x>8;y=++i) printf("%d%d",x--,y); } A.10192 B.9876 C.10990 D.101091 3.当执行以下程序段时。 x=-1; do {x=x*x;} while (!x); A.循环体将执行一次 B.循环体将执行两次 C.循环体将执行无数多次 D.系统将提示有语法错误4.执行以下程序后输出的结果是()。 main() { int y=10; do{y--;}while(--y); printf("%d\n",y--);} A.-1 B.1 C.8 D.0 5.下面程序的输出结果是()。 main() { int x=3,y=6,a=0; while (x++!=(y-=1)) {a+=1; if (y

A.x=4,y=4,a=1 B.x=5,y=5,a=1 C.x=5,y=4,a=3 D.x=5,y=4,a=1 6.若i,j已定义为int类型,则以下程序段中内循环的总的执行次数是()。 for (i=5;i;i--) for (j=0;j<4;j++) {…} A.20 B.24 C.25 D.30 7.请读程序: #include 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++;break; } printf("a=%d,b=%d\n",a,b); } 上面程序的输出结果是()。 A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 8.若有以下程序段,w和k都是整型变量 w=k; LB: if(w==0) goto LE; w--; printf(〞*〞); goto LB; LE: 则不能与上面程序段等价的循环语句是()。 A. for(w=k;w!=0;w--) print(〞*〞); B. w=k; while(w--!=0) printf(〞*〞); w++; C. w=k; do {w--;printf(〞*〞);} while (w!=0); D.for (w=k;w;--w) printf(〞*〞); 9.下面程序的输出是()。

第五章 循环结构

第五章循环结构 5.1 选择题 1.以下程序的输出结果是( )。 main() { int n=4; while (n--) printf(〞%d〞,--n); } A.20 B.31 C.321 D.210 2.以下程序的输出结果是( )。 main() {int x=10,y=10,i; for(i=0;x>8;y=++i) printf("%d%d",x--,y); } A.10192 B.9876 C.10990 D.101091 3.当执行以下程序段时。 x=-1; do {x=x*x;} while (!x); A.循环体将执行一次 B.循环体将执行两次 C.循环体将执行无数多次 D.系统将提示有语法错误4.执行以下程序后输出的结果是()。 main() { int y=10; do{y--;}while(--y); printf("%d\n",y--);} A.-1 B.1 C.8 D.0 5.下面程序的输出结果是()。 main() { int x=3,y=6,a=0; while (x++!=(y-=1)) {a+=1; if (y

A.x=4,y=4,a=1 B.x=5,y=5,a=1 C.x=5,y=4,a=3 D.x=5,y=4,a=1 6.若i,j已定义为int类型,则以下程序段中内循环的总的执行次数是()。 for (i=5;i;i--) for (j=0;j<4;j++) {…} A.20 B.24 C.25 D.30 7.请读程序: #include 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++;break; } printf("a=%d,b=%d\n",a,b); } 上面程序的输出结果是()。 A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 8.若有以下程序段,w和k都是整型变量 w=k; LB: if(w==0) goto LE; w--; printf(〞*〞); goto LB; LE: 则不能与上面程序段等价的循环语句是()。 A. for(w=k;w!=0;w--) print(〞*〞); B. w=k; while(w--!=0) printf(〞*〞); w++; C. w=k; do {w--;printf(〞*〞);} while (w!=0); D.for (w=k;w;--w) printf(〞*〞); 9.下面程序的输出是()。

第5章 循环结构

第五章循环结构 一、单项选择题(本大题共20小题,每小题1分,共20分) 1.执行下面程序段后,输出字符B的个数是() x=0; while(x<=5) {printf("B"); x+=2;} A.0个B.3个C.5个D.6个 2.在下述程序中,for循环执行的次数是() main( ) {int i =0,j=10,k=2,s=0; for(; ;) {i+=k; if(i>j) {printf("%d\n",s); break;} s+=i; } } A.4 B.5 C.6 D.7 3.执行下面程序段后,输出字符A的个数是() for(i=0;i<=5;i+=2) printf(“A”); A.0个B.3个C.5个D.6个 4.执行while(表达式)循环的条件是() A.当表达式的值为0时B.仅当表达式的值为1时 C.当表达式的值非0时D.当表达式的值不为1时 5.下列程序段输出的结果是() for(i=1;i<3;i+ +) for(j=1;j<3;j+ +) printf("%d",i+j); A.2 3 3 4 B.2 3 4 C.2 3 D.2 3 4 3 4 6.对do语句while(表达式);结构的循环,下列说法正确的是()A.当表达式的值为非零时不执行循环体

B.循环体至少被执行一次 C.当表达式的值为零时循环体一次也不执行 D.循环体仅被执行一次 7.只能在循环语句中用于结束本轮循环的语句是() A.break; B.continue; C.goto D.if 10.下列程序段的输出结果是() i=1; while(i<3) {j=1; while(j<=i) {printf(“%d”,i+j); j++;} i++; printf(“\n”); } A. 2 3 3 4 B. 2 3 4 C. 2 3 D. 2 3 4 3 4 8.下列程序段的输出结果是() a=100; do a=a+l; while(a>120); printf(“%d”,a); A.100 B.101 C.120 D.121 9.关于break和continue语句,下列说法正确的是() A.在循环体中可以用break语句结束本次循环 B.在循环体中可以用continue语句结束本次循环 C.break语句仅能使用在switch结构中 D.可以使用continue语句跳出switch结构 10.对于for(表达式l;表达式2;表达式3)语句;控制循环结束的表达式是() A.表达式1 B.表达式2 C.表达式3 D.表达式l和表达式3 11.下列语句中不能 ..实现循环结构的语句是() A.if语句 B.while语句 C.do—while语句 D.for语句 12.以下程序的输出结果是() main()

相关主题
相关文档
最新文档