j){printf("%d\n",s);break;}s+=i;}}A.4B.5C.6" />
文档库 最新最全的文档下载
当前位置:文档库 › 第5章 循环结构

第5章 循环结构

第5章 循环结构
第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()

{ int y=10;

while(y——);

printf("y=%d",y);

}

A.y=-1

B.y=0

C.y=1

D.y=随机值

13.关于break语句,以下说法不正确

...的是 ( )

A.它可以用于循环语句中

B.它可以用于switch语句中

C.可以从最内层循环结构中直接跳出最外层循环结构

D.可以从当前switch结构中跳出

14.执行下面程序段后,a的值是( )

int a=100;

do

{a++;}while(a>120);

A.100

B.101

C.120

D.121

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

A.int i=100;

B.for(;;);

while(1)

{ i=i%100+1;

if(i>100) break;}

C.int k=1000;

D.int s=36;

do{++k;}while(k>10000); while(s);--s;二、多项选择题(本大题共5小题,每小题2分,共10分)

1.下列循环将会产生死循环的有()

A.while(1); B.do{ }while(0);

C.do{ }while(1); D.for(k=1;k>―10;k+ +); E.for(k=1;k=10;k+ +,k――);

2.下列关于break、goto、continue语句的说法中正确的是()

A. break语句能够用于循环语句中

B. break语句不能用于switch语句中

C. goto语句可以用于直接从多层循环中退出

D. continue语句可用于跳出循环体

E. continue语句不能用于switch语句中

3.下面能执行循环结构的语句有()

A.if语句

B.while语句

C.do—while语句

D.for语句

E.switch语句

三、简答题(本大题共4小题,每小题4分,共16分)

1.用while循环结构完成下面程序段的功能。

s=0

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

s+=i;

2.写出do-while语句的一般形式及其执行过程。

3.写出for语句的一般形式并分析循环体被执行的条件。

4.简述break语句和continue语句在循环体中的功能。

5.写出for语句的一般形式及执行过程。

6.设有下面程序:

void main(void)

{int x;

x=1;

while(x<20){

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

x+=2; }

}

请把程序改写为for结构。

7.下面是求1到100之和的程序

main( )

{int i,sum=0;

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

sum+=i;

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

}

问如何修改循环体,使其仅求前10个数之和。

四、阅读分析题(本大题共6小题,每小题5分,共30分)

1.阅读下面程序:

void main(void)

{int s=0,n=0,x;

label: scanf("%d",&x);

if(x>0){

s+=x;

n++;

printf("s=%d,n=%d,even=%f\n",s,n,1.0,*s/n); } if(x!=0)

goto label;

else

printf("good bye!");

}

当依次输入12 -3 -6 5 13 0↙时,写出程序的运行结果。2.阅读下面程序,写出运行结果。

main()

{int x,sum=0;

loop1:

scanf(“%d”,&x);

if(x!=8)

{if(x%2= =0)

{sum+=x;

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

}

goto loopl;

}

sum-=x;

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

}

当程序执行时输入数据1 2 3 4 5 6 7 8 ↙,写出程序运行结果。3.阅读下面程序,写出运行结果。

main()

{int a[3][3],i,j;

for (i=0;i<3,i+ +)

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

a[i][j]=i+j;

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

{for(j=0;j<=i;j+ +)

printf(“%2d”,a[i][j]);

printf(“\n”);

}

}

3.请阅读分析下列程序,然后写出程序的循环次数和运行结果。

main(void)

{int i;

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

{if(i%2)

{printf("@");continue;}

printf("*");}

printf("\n");

}

4.阅读分析下面程序后,写出程序的运行结果。

#include “stdio.h”

main( )

{int n,m;

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

{for(m=1;m<=4;m++)

printf("%4d",m n);

printf("\n");

}

}

5.下列程序的功能和输出结果是什么?

void main(void)

{int k=0,total=0;

while(k<=100){

total+=k;

k++;}

print("total=%d\n",total);

}

6.分析下列两个程序的区别,并写出它们的运行结果。

void main(void) void main(void)

{ {

int y=0,s,k; int y=0,s,k;

for(k=0;k<6;k++) for(k=0;k<6;k++){

s=k*k; s=k*k;

y+=s; y+=s;

}

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

} }

7.写出下面程序的功能及运行结果。

main()

{

int n=1,sum=0;

do{

sum=sum+n;

n+=2;

}while(n<100);

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

}

8.阅读下列程序,当依次输入11,l2,l3,14,16这5个数时,请写出程序的运行结果。

void main(void)

{int x ,i ,s=O ;

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

{scanf("%d",&x);

if(x%2)continue ;

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

s+=x;

}

printf("\n");

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

}

9.阅读下列程序并写出运行结果。

main( )

{int s=0,k=1,i ;

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

{k=k+i ;

s+=k ;

if(i>3) break ;

s+=2*k :

printf("s=%d\n",s);}

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

}

五、程序设计题(本大题共2小题,每小题12分,共24分)

1.用以下近似公式编一个求π的近似值的程序。

1

21)1(715131141

--++-+-=-n n π

,其中n 的值由键盘输入。 2.从键盘上输入一个正整数n(n ≤10),求n 的阶乘并输出结果。

3.从键盘上输入20个整数,求其中正数的累加和并输出结果。

4.从键盘输入10个整数,编程求其中大于3且小于100的数的平均值并输出结果。

5.编程求20至100之间素数的累加和并输出该累加和。

6.从键盘上输入30个整数,输出其中能被3整除的数,并求出所有能被3整除的数之和。

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

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

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