文档库 最新最全的文档下载
当前位置:文档库 › 第5章 循环结构 习题

第5章 循环结构 习题

第5章 循环结构 习题
第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

}

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.死循环3.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);

}

3.3 答案及部分解题分析

一.选择题答案

1.A

2.D

3.A

4.D

5.D

6.A

7.A8.C 9.D 10.C 11.C 12.C

13.D 14C 15.A16.C 17.C 18.D

19.C 20.B 21.A22.C 23.B 24.B

25.A26.A27.B 28.A29.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 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构 【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。【答案】多分支 2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。 【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。 【答案】直到型 3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。 【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。【答案】#include"stdio.h"或#include<stdio.h> 4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( ) ①'A'/②A/③x=A/ ④x=A,y=12/ 12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键 【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符, 在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。【答案】④ 5 设有下列程序段,则执行该程序段后的输出是( ) int i=012; float f=1.234E-2; printf("i=%-5df=%5.3f",i,f); ... ①i=__012f=1.234 ②i=10___f=0.012 ③10___O.012 ④___100.012 注:答案中的_代表一个空格。 【分析】输出语句的格式控制符串中的“i=”、“f=”都是非格式控制符,在输出时必须原样,原位置输出,所以只有备选答案①和②才符合这个要求;格式控制符“%-5d”的格式控制是数据左对齐、宽度为5的整型数据,备选答案①中的数据是右对齐的;此外,该答案中的实数“1.234E-2”应该代表“0.01234”,而不是“1.234”。只有备选答案②符合题意。【答案】② 6 在Turbo C的主屏幕中,将当前编辑的源程序以原名存盘,可以选用___________菜单项,也可以直热键________。 【分析】如果选用“File/Save”菜单项,或者使用热键(f12),当前编辑的源程序将以原来的文件名存盘;如果选用“File /Write to”,当前编辑的源程序将以新的文件名存盘。 【答案】File/Save F2 7 下列各种选择结构的问题中,最适合用if-else语句来解决的是( ) ①控制单个操作做或不做的问题 ②控制两个操作中选取一个操作执行的问题 ③控制三个操作中选取一个操作执行的问题 ④控制10个操作中选取一个操作执行的问题 【分析】if-else语句是专门解决“双分支结构”的,而“双分支结构”的问题就是用单个条件控制从两个操作中选取一个操作来执行的问题。 【答案】② 8 下列程序是输入一个小写字母,转换成对应大写字母的后一个字母输出。例如:'a'将转换成’B’、…、‘y’将转换成’Z’,其中的’Z’将转换成’A’。请填写程序中所缺少的语句。 main() {char ch ; scanf(”%c”,&ch〕; ch=ch- 32+1; ___________________; printf("%c\n",ch); } 【分析】分析程序库中的“ch=ch- 32+ 1;”语句,可知是将字符型变量 ch中的小写字母转换成对应的大写字母(- 32)的后一个字母(+ l)。如果ch中的字母是' a'、' b'、··,'y',转换结果都不会出错,但是,如果 ch中的字母是'Z',则-32后是大写字母'Z',再+l后将不是大写字母了。为了使其转换成'A',需要用一个单分支结构来实现:如果ch的值等于'Z'+ l,则硬性将 ch的值改成'A'。完成这个任务的语句是一条单分支语句,正是所缺少的语句。 【答案】 if (ch=='Z'+l) h='A'; 9不能正确计算下列分段函数的程序段是_________ |-1 x<0 y=|0 x=0 x>0 ① switch(x< 0)② if(x> 0) {case1:y=-1;break; y=1; case 0:switch(x==0)else {casel:y=0;break;if(x==0) case 0: y= l;y=0 } else } &ny=-l ③ y= l;④ y= l; if(x==0)if(x<0) y=0; y =-l; else else y=- l; if(x== 0) y=0; 【分析】先来分析备选答案①:表达式“x<0”的值只有两种可能性,成立值为1、不成立值为on如果“x<0”的值为 1(即 x< 0),则执行“easel:”后的语句“y=-l”后,退出 switch语句,符合分段函数要求。如果“x<0”的值为0(即x>=0),则执行“case 0:”后的switch语句。该switch语句的表达式是“x==0”,结果也有两种:成立为1、不成立为0.如果“x==0”的值为1(即x=0),则执行“case l:”后的语句“y=0”后,退出 switch语句,符合分段函数要求。如果“x==0”的值为0(即x>0),则执行“case 0:”后的语句“y=1”,也符合分段函数要求。再分析备选答案②:这是标准的用嵌套双分支结构来实现三分支的分段函数,结果显然是能求解分段函数的。分析备选答案③:双分支语句的条件是“x==0”,条件成立时,y值为0,符合分段函数的要求,条件不成立时(包含x>0和x<0两种情况),结果y值为-l,显然不符合分段函数的要求,所以本题要选该答案。至于备选答案④,是能正确计算分段函数的,首先置y为1;接着用双分支结构处理“x<0”和“x>=0”的两种情况:前者使得y值为一l;后者再执行一个单分支结构,如果“x==0”则使y值为0,否则不改变y值,保持y的原值1,符合分段函数的要求。 【答案】③ 10 三种循环语句都能解决循环次数已经确定的次数型循环,其中__________循环语句最适合。 【分析】当“for(表达式 1;表达式 2;表达式 3)语句;”中的表达式1为:整型变量 k=l;表达式 2为:整型变量 k<= n;表达式 3为:整型变量 k++;则这个 for循环就是次数为n次的标准次数型循环结构。 【答案】for 11执行下列程序段后的输出是() x=l; while(x<=3) x++,y=x+++x; printf("%d,%d",x,y); ① 6,10 ②5,8 ③4,6 ④3,4 【分析】我们可以使用逐步记录运行结果的方法来获得输出结果,记录如下: x=1; 进入循环,条件满足执行循环体:计算x+十得x为2,计算y=x+++x,得y为4、x为3; 继续循环,条件满足执行循环体:计算x+十得x为4,计算y=x+++x,得y为8、x为5; 继续循环,条件不满足退出循环; 输出x和y的值为5,8。 【答案】② 12 执行下列程序段,其中的do-while循环一共执行_次。 static int x; do x+=x*x; while (x); 【分析】对静态型变量,不赋初值也有值,对整型变量,其值为 0。执行循环语句 do-while 的循环体,x+=x* x是x=x+(x*

循环结构程序设计课后习题及答案

循环结构程序设计习题及答案1、循环语句的三要素分别 是、、。 2、for语句括号内的3个表达式的作用分别 是、、。 3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整地,只有当时,才结束整个循环。 4、在循环结构中,break语句的作用是;continue语句的作用是。 5、当循环条件一开始就为假时,对于while语句、do…while语句、for 语句,分别执行循环体次、次、 次。 6、下面程序段的执行次数: int a=0; while(a=0) { printf("good\n"); a--; } 7、下面程序段的执行次数: int a=0; while(a==0)

{ printf("good\n"); a--; } 8、下面程序段的执行次数: int a=1; while(a=1) { printf("good\n"); a++; } 9、下面程序段的执行次数: int a=1; while(a==1) { printf("good\n"); a++; } 10、下列程序段的运行结果是。 for(i=5;i>=0;i--) printf(“%d “,i); 11、下列程序段的运行结果是。 for(n=1;n<20;n=n+3) printf(“%d “,n); 12、下列程序段的运行结果是。

for( ch='a' ;ch<='e' ;ch++) printf(“%d“,ch-97); 13、下列程序段的运行结果是。 for(i=1,j=5 ; i

第6章 循环结构程序设计

第6章循环结构程序设计 【计划课时】授课6课时+上机4课时 6.1 概述 循环是在循环条件为真时计算机反复执行的一组指令(循环体)。 循环控制通常有两种方式: ·计数控制——事先能够准确知道循环次数时用之 用专门的循环变量来计算循环的次数,循环变量的值在每次执行完循环体各语句后递增,达到预定循环次数时则终止循环,继续执行循环结构后的语句。 ·标记控制——事先不知道准确的循环次数时用之 由专门的标记变量控制循环是否继续进行。当标记变量的值达到指定的标记值时,循环终止,继续执行循环结构后的语句。 在C语言中可用以下语句构成循环: if … goto while do … while for 6.2if … goto语句循环结构P106 goto是一种无条件转向语句。 一般形式: goto标号; if … goto 可构成当型/直到型循环结构(尽量少用,以提高程序可读性/结构性)。 【例一】 { int n=0,sum=0; loop: sum+=n; ++n; if (sum<=10000) goto loop; printf(“n = %d\n”,n); }

6.3 while 语句循环结构 P107 一般形式 while (条件表达式) 循环体; 用于构成当型循环:先判断后执行/条件为真继续循环,直到条件为假时结束循环。 【注意】条件表达式或循环体内应有改变条件使循环结束的语句,否则可能陷入“死循环”。 【例一】 main() { int n=0; while (n<=2) { n++; printf(“%d”,n); } } 结果:123 【讨论】若去while 语句中的{},结果:3;若将n++移到printf 语句中,结果:012 【例二】 int n=0; while (n++<=2); printf(“%d”,n); 结果:4 【讨论】n=3时,while 条件为假,结束循环,但比较后n 自加了一,所以n=4。 【例三】 main() { int i=0; while (1) { printf(“*”); i++; 【例二】 main() { int n=0,sum=0; loop: if (sum>=10000) goto end; sum+=n; ++n; goto loop; end: printf(“n = %d \n”,n); }

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

第五章循环结构程序设计 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);

C语言循环结构复习题

循环结构程序设计复习题 一.选择题 1.以下while循环中,循环体执行的次数是:() k=1; while (--k) k=10; a) 10次b) 无限次c) 一次也不执行d) 1次2.有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=0; while (!x!=0) x++; a) 退出while循环后,x的值为0 b) 退出while循环后,x的值为1 c) while的控制表达式是非法的 d) while循环执行无限次 3. 有以下程序段,其中n为整型变量,执行后输出结果是:() n=20 ; while(n--) ; printf(“%d”,n) ; a) 2 b) 10 c) -1 d) 0 4. 有以下程序段,其中t为整型变量,以下选项中叙述正确的是:() t=1;

while (-1) { t--; if(t) break;} a) 循环一次也不执行 b) 循环执行一次 c) 循环控制表达式(-1)不合法 d) 循环执行2次 5. 有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=-1; do {;} while (x++); printf(“x=%d”,x); a) 该循环没有循环体,程序错误 b) 输出x=1 c) 输出x=0 d) 输出x=-1 6. 有以下程序段,其中x,y为整型变量,程序输出结果是:() for(x=0,y=0;(x<=1)&&(y=1);x++,y--) ; printf(“x=%d,y=%d”,x,y); a) x=2,y=0 b) x=1,y=0

x=0,y=0 d) x=1,y=1 c) 解析:在开始时 x=0,y=0; 进入循环判断(x<=1)&&(y= 1) 条件成立,同时把1赋给y,此时x=0,y=1; 然后执行 x++,y--,执行之后x=1,y=0; 再进入循环判断(x<=1)&&(y= 1),条件成立,同时同时把1赋给y,此时x=1,y=1; 然后执行 x++,y--,执行之后x=2,y=0; 再进入循环判断(x<=1)&&(y= 1),条件不成立,跳出循环 输出x=2,y=0 。 7. 有以下程序: main() { int x=0,y=0; while(x<5&&++y) y--,x++; printf(“%d,%d”,y,x); } 程序的输出结果是:() a) 0,5 b) 1,5 c) 0,4 d) 1,4 8. 有以下程序:main() int num=0; { do ,num); } { num++ ;printf(“%d\n” while(num<=2); } 程序的输出结果是:() 1 1c) 1 d)

第5部分 循环结构

第5部分循环结构 一、选择题 1、以下程序: void main() { int x,i; for(i=1;i<=100;i++) { x=i; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf(“%d “,x); } printf(“\n”); } 其输出结果是( D )。 A.39 81 B.42 84 C.25 68 D.28 70 2、设i和x都是int类型,则for循环语句( A )。 for(i=0,x=0;i<=9&&x!=876;i++) scanf(“%d”,&x); A.最多执行10次B.最多执行9次 C.是无限循环D.循环体一次也不执行 3、下述for循环语句( B )。 int i,k; for(i=0,k=-1;k=1;i++,k++) printf(“***”); A.判断循环结束的条件非法B.是无限循环 C.只循环一次D.一次也不循环 4、下述循环的循环次数是( B ) int k=2; while(k=0) printf(“%d”,k); k--; printf(“\n”); A.无限次B.0次C.1次D.2次 5、对于(1),(2)两个循环语句,( A )是正确的描述。 (1) while(1); (2) for(;;); A.(1)(2)都是无限循环B.(1)是无限循环,(2)错误C.(1)循环一次,(2)错误D.(1)(2)皆错误 6、下述程序的输出结果是( B )。 #include void main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++)

第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()

while循环结构例题

引子 #include "stdio.h" main() { int i=1; for(i=1;i<=10000;i++) printf(“%d\t”,i); } 题型1 输入输出多个数据 eg1、输出1~10000之间所有的整数#include "stdio.h" main() { int i=1; while(i<=1000) {printf(“%d\t”,i); i++;} } 拓展:1、换成所有的奇数 2、换成所有的偶数 题型2 有限个数连加和连乘

eg2.1、求1+2+3+4+………+100的值 #include "stdio.h" main() { int i=1,s=0; while(i<=100) {s=s+i; i++;} printf(“%d\n”,s); } 拓展:1、求1+2+3+4+………+n的值 2、求12+22+32+………+n2的值 3、求1+1/2+1/3+………+1/n的值eg2.2、求n!的值 #include "stdio.h" main() { int i=1,n,p=1; scanf(“%d”,&n); while(i<=n) {p=p*i; i++;} printf(“%d\n”,p); }

拓展:求1!+2!+3!+………+n!的值 #include "stdio.h" main() { int i=1,n,p=1,s; scanf(“%d”,&n); while(i<=n) {p=p*i; s=s+p; i++;} printf(“%d\n”,s); } 题型3 无限个数连加 eg3、求1-1/3+1/5-1/7+………的近似值,要求精度要达到10-4 #include "stdio.h" #include "math.h" main() { float n=1,s=0,f=1,t=1; while(fabs(t)>=1e-4) {t=f/(2*n-1); s=s+t;

C语言循环结构练习题带答案

第5章循环结构程序设计 练习题 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是__C__。

第5章循环结构程序设计35 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B.for (i=1;;i++) sum=sum+1; C.k=0; do { ++k; } while (k<=0); D.s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是_B___。 #include main() { int i; for (i=4;i<=10;i++) { if (i%3==0) continue; COUT<

第六章循环控制概要

第六章循环控制 通过本章实验作业应达目标 1.熟悉while、for、do_while、break、continue语句的作用与使用规范。 2.学习并掌握利用while语句、for语句、do_while语句实现循环结构。 3.掌握循环结构和选择结构之间嵌套、多重循环间嵌套的设计方法。 4.进行算法设计训练,能综合所学控制结构语句解决一般问题。 本章必须上交作业 程序6_1.c、6_2.c、6_5.c、6_6.c、6_8.c上传至211.64.135.121/casp。 本章开始,上机实验项目量加大,希望同学们多多自行上机。本章实验项目有余力都可以做一下并上交。 循环程序设计 计算机解决问题都是按指定的顺序执行一系列的动作。按照特定的顺序执行相应的动作来求解问题的过程称为算法。程序中的语句是算法的体现,而算法要解决的是“做什么”和“怎么做”的问题。 计算机程序中指定语句的执行顺序称为“程序控制”。结构化的程序控制包含三种基本结构:顺序结构,选择结构和循环结构。 1. 循环设计 循环是在循环条件为真时反复执行的一组计算机指令,是计算机解题的一个重要结构。循环控制有两种基本方法:计数法和标志法。 1)计数器控制的循环 事先准确地知道循环次数,因此设计一个循环控制变量,由变量值来控制循环次数。每循环一次,循环变量的值会递增(增值通常为1或-1),当其值达到终值时结束循环。 教材例6.2、6.3、6.7都是典型的计数器控制的固定次数次数循环。 2)标志控制的循环 事先不知道准确的循环次数,由某一目标值标记循环的结束。如,教材例6.6中以|t|的值达到标记下限值1e-6作为循环的结束。 循环设计时要注意合理设计循环条件,使得循环不会成为死循环。 2. 算法 程序设计的首要工作是算法设计,离开了算法也就没有了程序。算法,是指完成某一项工作而采取的方法和步骤,具体到程序设计,是对解题过程的准确而完整的描述,并用一种程序设计语言的来实现。 循环主要用来解决程序设计中两类基本的算法:穷举和迭代。 1)穷举 穷举的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。穷举是一种重复型算法,其核心是设计循环,在循环体中依次测试。 例:输入两个正整数x和y,求其最大公约数。 main() {int x,y,i,flag; printf("Please input two numbers:"); scanf("%d%d",&x,&y);

循环结构练习题

循环结构练习题 一.选择题 1.下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 则下面描述中正确的是。 A)while循环执行10次 B)循环是无限循环 C)循环题语句一次也不执行 D)循环体语句执行一次 2.以下for循环的执行次数是。 for (x=0,y=0; (y=123) && (x<4) ; x++) ; A)无限循环 B)循环次数不定 C)4次 D)3次 3.以下程序段的循环次数是。 for (i=2; i==0; ) printf(“%d”,i--) ; A)无限次 B)0次 C)1次 D)2次 4.下面程序段的运行结果是。 x=y=0; while (x<15) y++,x+=++y ; printf(“%d,%d”,y,x); A)20,7 B)6,12 C)20,8 D)8,20 5.下面程序的输出结果是。 main ( ) { int x=9; for (; x>0; x--) { if (x%3==0) { printf(“%d”,--x); continue ; } } } A)741 B)852 C)963 D)875421 6.以下不是死循环的程序段是。 A) int i=100; B)for ( ; ; ) ; while (1) { i=i%100+1 ; if (i>100) break ; } C) int k=0; D)int s=36; do { ++k; } while (k>=0); while (s) ; --s ; 7.下述程序段的运行结果是。 int a=1,b=2,c=3,t; while (a++y;x=i++) i=x ; B)for ( ; ; x++=i ) ; C)while (1) { x++ ; } D)for (i=10 ; ; i--) sum+=i ; 9.下述语句执行后,变量k的值是。

循环结构程序设计练习题 内含答案

第三单元循环结构练习题 选择题: 1、有以下程序执行后的输出结果是( D )。 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf("%d\n",s);} A.自然数1~9的累加和 B.自然数1~10的累加和 C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和 2、以下关于for语句的说法不正确的是( A )。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先判断表达式,后执行循环体语句 C. for循环中,可以用break跳出循环体 D. for循环体语句中,可以保含多条语句,但要用花括号括起来 3、若i和k都是int类型变量,有以下for语句 for(i=0,k=-1;k=1;k++) printf("*****\n"); 下面关于语句执行情况的叙述中正确的是( d )。 A.循环体执行两次 B.循环体执行一次 C.循环体一次也不执行 D.构成无限循环 4、以下程序程序的执行后的输出结果是( c )。 main() {int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf(“%d”,t[2-i][i]);} A.7 5 3 B. 3 5 7 C.3 6 9 D.7 5 1 5、以下程序运行后的输出结果是( A )。 void fun(char*s) { while(*s) { if(*s%2==0) printf(“%c”,*s); s++;} } main() { char a[]={“good”};fun(a);printf(“\n”);} 注意:字母a的ASCⅡ码值为97 A.d B.go C.god D.good 6、已知 int t=0; while(t=1){...} 则以下叙述正确的是( B )。 A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 7、设有以下程序段 B int x=0,s=0; while(!x!=0)s+=++x; printf("%d",s); 则 A)运行程序段后输出0

c语言循环结构上机习题

c语言循环结构上机习 题 标准化工作室编码[XX968T-XX89628-XJ668-XT689N]

1、计算n的阶乘(n!),n的取值在1~10之间。分别使用while、do…while和for语句实现。(三个程序) 给循环变量赋初值 循环条件 循环体 循环变量的增值 2、输入一行字符,分别统计输入了多少个字母、数字、空格和其他字符。 3、假设函数f(x)=3x2+2x+1,试利用for循环语句分别求出1<=x<=9的f(1)~f(9)各函数值。 4、有分数序列2/1,3/2,5/3,8/5,13/8,21/13…求这个数列的前20项和。 (分析提示:每个分子等于前一个数据分子与分母的和,每个分母等于前一个数据的分子) 5、输出显示1~100之间可以被n整除的所有整数,运行时n由键盘输入。要求每一行显示5个数,并且统计一共有多少个整数能被n整除。 6、下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。

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);} 7、使用循环语句输出以下图形 8、有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。 8、一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。 分析:

c语言第5章练习题--循环结构程序设计

难度(*)--考点:基本概念、判断循环次数 1、C语言中下列叙述正确的是(D) A)不能使用do…while语句构成的循环 B)do…while语句构成的循环,必须用break语句才能退出 C)do…while语句构成的循环,当while语句中的表达式值为非零时结束循环 D)do…while语句构成的循环,当while语句中的表达式值为零时结束循环 2、对于下列程序片断,(A) int k=0; while(k=1) k++; 则while循环的执行次数是 A. 无限次 B. 有语法错误,不能执行 C. 一次也不执行 D. 执行一次 3、下面程序段(C) int k=2; while (k=0) {printf(“%d”,k);k--;}

则下面描述中正确的是。 A )while 循环执行10 次 B )循环是无限循环 C )循环题语句一次也不执行 D )循环体语句执行一次 4、当执行以下程序段时(A) x=-1; do { x=x*x;} while(!x); A)循环体将执行一次 B)循环体将执行两次 C)循环体将执行无限次 D)系统将提示有语法错误 5、若i为整型变量,则以下循环执行次数是(B): for( i = 2; i ==0;) printf(“%d”, i); A) 无限次B) 0次c) 1次D) 2次 6、对for(表达式1; ; 表达式3)可理解为(B)

A) for(表达式1; 0 ; 表达式3) B) for(表达式1; 1 ; 表达式3) C) for(表达式1;表达式1; 表达式3) D) for(表达式1;表达式3; 表达式3) 7、下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择填空。(A) main ( ) { int m=0,n=0; char c; while (( ) ! '\n') { if (c>='A' && c<='Z') m++; if (c>='a' && c<='z') n++; } } A)c=getchar( ) B)getchar( ) C)c==getchar( ) D)scanf(“%c”,&c) 8、下面for 循环语句。(B)

第6章循环结构(二)

第6章 循环结构(二) ◇本章工作任务 实现MyShopping统计顾客的年龄层次 实现MyShopping循环录入会员信息 实现MyShopping登录时用户信息验证 ◇本章技能目标 会使用for循环结构 会在程序中使用break和continue

本章单词 请在预习时学会下列单词的含义和发音,并填写 在横线处。 1.rate: 2.young: 3.schedule: 4.negative: 5.customer: 6.birthday: 7.point: 8.continue: 9.return: _

本章简介 上一章我们学习了while和do-while循环结构。在编程的过程中,把一些重复执行的代码采用循环结构进行描述,大大简化了编码工作,使得代码更加简洁、易读。相信通过使用循环结构编程,你一定体会到了它的魅力。while循环结构是先进行条件判断,然后执行循环操作;do-while循环结构是先执行依次循环操作,然后进行判断。但是Java中的循环结构不只有while和do-while两种,还有for循环结构,它又是什么样子的?有什么功能?这一章就让我们揭晓这一结构:for循环结构。 6.1 for循环 6.1.1 为什么需要for循环 在上一章,通过使用while循环,张浩轻松解决了老师补充的问题,如示例1所示。 示例1 public class WhileDemo { public static void main(String[] args) { int i=0; while(i<100){ ←使用while循环 System.out.println(“好好学习,天天向上!”); i++; } } } 仔细观察你会发现,这里的循环次数“100遍”已经固定,这是我们也可以选用for循环结构来实现,如示例2所示。 示例2 public class ForDemo { public static void main(String[] args) { for(int i=0; i<100; i++;) { ←使用for循环 System.out.println(“好好学习,天天向上!”); } } }

第五章循环结构

第五章循环结构 一、选择题 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

C语言循环结构测习题带答案

第5章循环结构程序设计 5.1基本知识点 ?while语句的使用格式和注意事项 ?do-while语句的使用格式和注意事项 ?for语句的使用格式和注意事项 ?break和continue语句在循环语句中的应用 ?循环结构的嵌套 ?使用goto语句实现循环结构 ?穷举法程序设计方法 ?迭代程序设计方法 5.2练习题5 1.单项选择题 (1)语句while(!e);中的条件!e等价于A。 A.e==0 B.e!=1 C.e!=0 D.~e (2)下面有关for循环的正确描述是D。 A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判定表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中D。 A.不能使用do-while语句构成的循环 B.do-while语句构成的循环必须用break语句才能退出 C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是A。 A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 (5)以下程序段C。 intx=-1; do { x=x*x; } while(!x);

(6)下列语句段中不是死循环的是__C__。 A.i=100; while(1) { i=i%100+1; if(i==20)break; } B.for(i=1;;i++) sum=sum+1; C.k=0; do { ++k; }while(k<=0); D.s=3379; while(s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while(a) { if(b)continue; c; } A.while(a) B.while(c) {if(!b)c;} {if(!b)break;c;} C.while(c) D.while(a) {if(b)c;} {if(b)break;c;} (8)以下程序的输出结果是_B___。 #include main() { inti; for(i=4;i<=10;i++) { if(i%3==0)continue; COUT< main() { intnum=0; while(num<=2) { num++; cout<

相关文档
相关文档 最新文档