您好,欢迎来到抵帆知识网。
搜索
您的当前位置:首页循环结构程序设计练习题__内含答案概要

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

来源:抵帆知识网
第三单元 循环结构练习题

选择题:(有答案)

1、有以下程序执行后的输出结果是( )。 main( )

{ int i,s=0;

for(i=1;i<10;i+=2) s+=i+1; printf(\"%d\\n\

A.自然数1~9的累加和 B.自然数1~10的累加和

C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和 2、以下关于for语句的说法不正确的是()。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先判断表达式,后执行循环体语句 C. for循环中,可以用break跳出循环体

D. for循环体语句中,可以保含多条语句,但要用花括号括起来 3、若i和k都是int类型变量,有以下for语句 for(i=0,k=-1;k=1;k++) printf(\"*****\\n\");

下面关于语句执行情况的叙述中正确的是( )。 A.循环体执行两次 B.循环体执行一次 C.循环体一次也不执行 D.构成无限循环

4、若运行以下程序时,输入2473↙,则程序的运行结果是:( ) main ( ) { int c;

while ((c=getchar( )) ! =’\\n’) switch (c-‘2’) { case 0 :

case 1 : putchar (c+4) ;

case 2 : putchar (c+4) ; break ; case 3 : putchar (c+3) ;

default : putchar (c+2) ; break ; }

printf(“\\n”); }

A)6677 B)6666 C)66778777 D)6688766 5、以下for循环的执行次数是:() 。 for (x=0,y=0; (y=123) && (x<4) ; x++) ;

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

6、已知 int t=0; while(t=1){...} 则以下叙述正确的是()。A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对

7、设有以下程序段() int x=0,s=0;

while(!x!=0)s+=++x; printf(\"%d\); 则 A)运行程序段后输出0 B)运行程序段后输出1

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

8、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为(for(i=0, j=10; i<=j; i++, j- -) k=i+j;

A.6 B.9 C.10 D.11 9、C语言中,break; 语句可以用于循环语句和( )语句中。 A.if B.switch C.for D.while

10、for(i=0; i<=15; i++) printf(\"%d\循环结束后,i 的值为(A.14 B.15 C.16 D.17

第 1 页 共 16 页

)。 )。 11.有以下程序 main()

{ char b,c; int i; b='a'; c='A'; for(i=0;i<6;i++)

{ if(i%2) putchar(i+b); else putchar(i+c); } printf(\"\\n\");}

程序运行后的输出结果是( )

A. ABCDEF B. AbCdEf C. aBcDeF D. abcdef 12、与语句“while(!x)”等价的语句是()。

A. while(x==0) B. while(x!=0) C. while(x==1) D. while(x!=1) 13、下面程序段的运行结果是( ) 。 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 14、以下程序中,while循环的次数是( )。 #include void main( ) {int i=0;

while(i<10) { if(i<1) continue; if(i= =5)break; i++;}} A. 1 B. 死循环,不能确定次数 C. 6 D. 10 15.下面程序段 int k=2;

while (k=0) {printf(“%d”,k);k--;} 则下面描述中正确的是( ) 。

A)while循环执行10次 B)循环是无限循环 C)循环题语句一次也不执行 D)循环体语句执行一次 16.以下程序段的循环次数是( ) 。

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

A)无限次 B)0次 C)1次 D)2次 17.下面程序的输出结果是()。 main ( )

{ char c='A’; int k=0; do {

switch (c++) {

case ‘A’ : k++ ; break ; case ‘B’ : k-- ;

case ‘C’ : k+=2 ; break ; case ‘D’ : k%=2 ; continue ; case ‘E’ : k*=10 ; break ; default : k/=3 ; } k++;

} while (c<’G’) ; printf (“k=%d”,k) ; }

A)k=3 B)k=4 C)k=2 D)k=0 19.下面程序的输出结果是 ()。 main ( ) { int x=9;

for (; x>0; x--) { if (x%3==0) {

printf(“%d”,--x); continue ; } } }

A)741 B)852 C)963 D)8721

第 2 页 共 16 页

20. int i=100;以下不是死循环的程序段是() 。 A)while (1) {i=i%100+1 ;if (i>100) break ;} B)for ( ; ; ) ;

C) int k=0; do { ++k; } while (k>=0); D)int s=36;while(s) ;--s ;

21.下述程序段的运行结果是()。 int a=1,b=2, c=3, t=4;

while (a22.下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择() 填空。 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)

23.下述语句执行后,变量k的值是() 。 int k=1;

while (k++<10);

A)10 B)11 C)9 D)无限循环,值不定 24.下面程序的输出结果是() 。 main ( )

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

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

m = i+j ;

printf(“k=%d,m=%d”,k,m) ; }

A)k=0,m=3 B)k=0,m=5 C)k=1,m=3 D)k=1,m=5 25.下面for循环语句 。( ) int i,k;

for (i=0, k=-1; k=1; i++, k++) printf(“***”);

A)判断循环结束的条件非法 B)是无限循环 C)只循环一次 D)一次也不循环

26.语句while (!E); 括号中的表达式!E等价于( ) 。 A)E==0 B)E!=1 C)E!=0 D)E==1 27. 以下不是死循环的语句是( ) 。 A)for (y=9,x=1;x>++y;x=i++) i=x ; B)for ( ; ; x++=i ) ; C)while (1) { x++ ; }

D)for (i=10 ; ; i--) sum+=i ;

28.执行语句for (i=1;i++<4;) ; 后变量i的值是( )。 A)3 B)4 C)5 D)不定 29.以下程序段( ) 。 x=-1; do

{ x=x*x; } while (!x);

A)是死循环 B)循环执行2次 C)循环执行1次 D)有语法错误

第 3 页 共 16 页

30.下面程序的功能是在输入的一批正数中求最大者,输入0结束循环,选择填空。 ( ) main ( )

{ int a,max=0;

scanf(“%d”,&a);

while (【 】) { if (maxA)a==0 B)a C)!a==1 D)!a

31. 设有程序段 int k=10; while (k<0) k=k-1; 则下面描述中正确的是 ( ) A while循环执行10次 B 循环是无限循环 C 循环体语句一次也不执行 D 循环体语句执行一次

32. 设有以下程序段 int x=0,s=0; while(x!=0)s+=++x;printf(\"%d\则( ) A 运行程序段后输出0 B 运行程序段后输出1 C 程序段中的控制表达式是非法的 D 程序段执行无限次 33、下面程序段的运行结果是( ) int n=0;

while (n++<=2); printf(\"%d\A,2 B、3 C、4 D 有语法错误 34、设有程序段 t=0;

while(printf(\"*\"))

{t++; if(t<3) break;}下面描述正确的是( ) A、其中循环控制表达式与0等价 B、其中循环控制表达式与’0‘等价 C 、其中循环表达式是不合法的 D、以上说法都不对

35、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等的数时结束循环,请选择填空。 main()

{int a,b,t;

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

{if(a>b) {t=a;a=b;b=t;} printf(“%d,%d\\n”,a,b);}

A、!a=b B、a!=b C、a==b D、a=b

36、下面程序的功能是从键盘输入的一组字符中统计出大写字母个数m和小写字母个数n,并输出m,n中较大者,请选择填空。 #include main( )

{int m=0,n=0; char c;

while((__)!=’\\n’)

{if(c>=’A’&&c<=’Z’) m++; if(c>’a’&&c<=’z’) n++;} printf(“%d\\n”,mA. c==getchar() B.getchar() C.c=getchar() D.scanf(“%c”,c) A. n:m B.m:n C.m:m D.n:n

37、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,Z变

第 4 页 共 16 页

成B。填空

#include main() {char c;

while((c=getchar( ))!=’\\n’) {if(c>=’a’&&c<=’z’) {_______;

if(c>=’Z’&&c<=’Z’+2) ___________;}

printf(“%c”,c);}

A.c+=2 B.c-=32 C.c=c+32+2 D.c-=30 A.c=’B’ B.c=’A’ C.c-=26 D.c=c+26 38、下面程序的运行结果是( ) main( ) {int num=0; while(num<=2)

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

A.1 B.12 C.123 D.1234

39、C语言中while和do-while循环的主要区别是( ) A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do–while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 40、以下描述中正确的是( ) A.由于do -while循环中循环语句中只能是一条可执行语句,所以循环体内不能使用复合语句。

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

C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作。 D.do-while循环中,根据情况可以省略while 41、若有以下后句 int x=3;

do{print(\"%d\\n\;则上面程序段() A.输入的是1 B.输出的是1和-2 C.输出的是3和0 D.死循环 42、下面程序的运行结果是( ) main() {int y=10;

do{y--;} while(--y); printf(\"%d\\n\A .-1 B.1 C.8 D.0

43、.下面有关for循环的正确描述是( ) A.for循环只能有于循环次数已经确定的情况 B.for 循环是先执行循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体

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

第 5 页 共 16 页

44、对for(表达式1;; 表达式3)可理解为( ) A.for(表达式1;0; 表达式3) B.for(表达式1;1;表达式3)

C.for(表达式1;表达式1;表达式3) D.for(表达式1;表达式3;表达式3) 45、以下程序段的运行结果是( )

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

46、下面程序的功能是计算1到50中是7的倍数的数值之和,请选择填空。 Main()

{int I,sum=0;

for(I=1;I<=50;I++) if(______)sun+=I; printf(“%d”,sum);}

A.(int)(i/7)==i/7 B.(int)i/7==i/7 C.i%7=0 D.i%7==0 47、下面程序段( ) for(t=1;t<=100;t++) {scanf(“%d”,&x); if(x<0) continue; ptintf(“%3d”,t);} A. 当x<0时整个循环结束 B. x>=0时什麽也不输出 C. printf函数永也不执行

D. 最多允许输出100个非负整数 48、下面程序的运行结果是( ) main()

{int I,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 49、下面程序段( ) x=3;

do{y=x--;

if(!y) {printf(“x”); continue;} printf(“#”);} while(1<=x<=2);

A.将输出## B.将输出##*

C.是死循环 D.含有不合法的控制表达式 50、以下描述正确的是( )

A. goto语句只能用于退出多层循环 B. switch语句中不能出现continue语句 C. 只能用continue语句来终止本次循环 D. 在循环中break语句不能出现

第 6 页 共 16 页

51、下面程序的运行结果是( ) 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;}

ptintf(“%d\\n”,a);} A.7 B.8 C.9 D.10

52、下面程序的运行结果是( ) main()

{int I,j,x=0; for(I=0;I<2;I++) {x++;

for(j=0;j<=3;j++) {if(j%2)continue; x++;}}

ptintf(“x=%d\\n”,x);} A.x=4 B.x=8 C.x=6 D.x=12

53、下面程序的运行结果是( ) main() {int I;

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

{if(I%2) printf(“*”); else continue; printf(“#”);} printf(“$\\n”);}

A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$ 、下面程序的运行结果是( ) main()

{int I,j,a=0; for(I=0;I<2;I++) {for(j=0;j<4;j++) {if(j%2) break; a++;} a++;}

printf(“%d\\n”,a);} A.4 B.5 C.6 D.7

55、下面程序段是从键盘输入的字符中统计数字字符的 个数,用换行符结束循环。请填空: int n=0,c; c=getchar(); while( )

{if( 09 ) n++; c=getchar();} 56、当运行以下程序时,从键盘输入right?,则下

第 7 页 共 16 页

面程序的运行结果是:5 #include main( ) {char c;

while((c=getchar()!=’?’); putchar(++c);) 57、下面程序的运行结果是 main()

{int a,s,n,count; a=2;s=0;n=1;count=1;

while(count<=7) {n=n*a;s=s+n;++count;} printf(“s=%d”,d);}

58、执行以下程序段以后,K值是:___36_____________ K=1;n=263;

Do{k*=n%10; n/=10;}while(n);

59、下面程序段中循环体的执行次数是______________ a=10; b=0;

do{b+=2;a-=2+b;}while(a>0);

60、当运行以下程序进,从键盘输入-1 0,则下面程序的运行结果是:______________________ main()

{int a,b,m,n; m=n=1; scanf(“%d%d”,&a,&b); do{if(a>0){m=2*n;b++;} else {n=m+n;a+=2;b++;} }while(a==b);

printf(“m=%dn=%d”,m,n);}

61、鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。 For(x=1;x<=29;x++) {y=30-x;

if(______________) printf(“%d,%d\\n”,x,y);}

62、当运行以下程序进,从键盘输入-1 0,则下面程序的运行结果是:______________________ main() {int a,b,m,n; m=n=1; scanf(“%d%d”,&a,&b); do{if(a>0){m=2*n;b++;} else {n=m+n;a+=2;b++;} }while(a==b);

printf(“m=%dn=%d”,m,n);}

63、鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。 For(x=1;x<=29;x++) {y=30-x;

if(______________) printf(“%d,%d\\n”,x,y);} 、若for循环体用以下形式表示:

第 8 页 共 16 页

for(表达式1;表达式2;表达式3)循环体语句

则执行语句for(I=0;I<3;I++) printf(“*”);时,表达式1

执行(__________1____________)次,表达式3执行(_______3_______________)次。 65、下面程序的功能是计算1-3+5-7+…-99+ 100的值,请填空。 Main()

{int I,t=1,s=0;

for(I=1;I<=101;I+=2)

{___________;s=s+t;__________;} printf(“%d\\n”,s);}

66、下面程序的运行结果是: main()

{int I,t,sum=0; for(t=I=1;I<=10;) {sum+=t; ++I; if(I%3==0)t=-I; else t=I}

printf(“sum=%d”,sum);}

67、下面程序的运行结果是:_________________

main() {int I;

for(I=1;I<=5;I++) switch(I%2)

{case0:I++;printf(“#”);break; case 1:I+=2;printf(“#”) default:printf(“\\n”);}}

68、下面程序的运行结果是: main() {int I=1; while(I<=15)

if(++I%3!=2) continue; else printf(“%d”,I) ; printf(“n\\”);}

69、下面程序的输出结果是: main()

{int I,j,k=19; while(I=k-1) {k-=3;

if(k%5==0) {I++;continue;} else if(k<5) break; I++;}

Printf(“I=%d,k=%d\\n”,I,k);} 70、

下面程序的运行结果是:

第 9 页 共 16 页

main() {int a,y; a=10;y=0; do{a+=2;y+=a; if(y>50)break; }while(a=14);

printf(“a=%d y=%d”,a,y);}

读程题:

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

{ int i,x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0; i<3; i++) printf(\"%d \}

2.以下程序的输出结果是 0 。 main()

{int n[2],i,j;

for(i=0;i<2;i++)n[i]=0; for(i=0;i<2;i++)

for(j=0;j<2;j++)n[j]=n「i」+1; printf(”%d\\n”,n[1]);}

3.以下程序的输出结果是 3 5 7 。 main()

{ int i, a[6]={2,3,4,5,6,7}; for(i=1; i<6; i+=2) printf(\"%d \}

4.以下程序的输出结果是 7 8 0 0

4 5 6

2 0 。

main()

{ int i, j, a[3][4]={{0,1,2},{3,4,5,6},{7,8}}; for(i=0;i<3;i++)

{ for(j=i;j<4;j++) printf(\"%5d\printf(\"\\n\"); } }

5、以下程序的输出结果是 3 。 main()

{ char s[ ]=\"012xy\\08s34f4w2\"; int i,n=0;

for(i=0;s[i]!=0;i++)

if(s[i]>='0'&&s[i]<='9') n++;

第 10 页 共 16 页

printf(\"%d\\n\

6.写出下面程序运行的结果。 ————20 70———— 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) ; }} 7.写出下面程序运行的结果。 -------3 -1----- main ( )

{ int i,b,k=0 ;

for (i=1; i<=5 ; i++) { b=i%2; while (b--) k++ ; } printf(“%d,%d”,k,b);}

8.写出下面程序运行的结果。 ----1----- 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);}

9.写出下面程序运行的结果。 _________36_________ main ( )

{ int k=1,n=263 ;

do { k*= n%10 ; n/=10 ; } while (n) ; printf(“%d\\n”,k);}

10.写出下面程序运行的结果。 ---- 31-1---- main ( ) { int i=5 ; do {

switch (i%2) {

case 4 : i-- ; break ; case 6 : i-- ; continue ; }

i-- ; i-- ;

printf(“%d”,i); }while (i>0) ; }

11.写出下面程序运行的结果。------3,1,-1,3,1,-1,----- main ( )

第 11 页 共 16 页

{ int i,j;

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

for (j=4 ; j>=0; j--) { if ((j+i)%2) { j-- ;

printf(“%d,”,j); continue ; }

--i ; j-- ;

printf(“%d,”,j) ; }}}

12.写出下面程序运行的结果。 ------a=16 y=60------ main ( )

{ int a=10,y=0 ; do {

a+=2 ; y+=a ; if (y>50) break ; } while (a=14) ;

printf(“a=%d y=%d\\n”,a,y) ; }

13.写出下面程序运行的结果。 -------i=6,k=4------ main ( )

{ int i,j,k=19;

while (i=k-1) { k-=3 ;

if (k%5==0) { i++ ; continue ; } else if (k<5) break ; i++; }

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

14.写出下面程序运行的结果。 --------1,-2------ main ( )

{ int y=2,a=1;

while (y--!=-1) do {

a*=y ; a++ ; } while (y--) ; printf(“%d,%d\\n”,a,y); }

15.写出下面程序运行的结果。 -----2,3------ main ( ) { int i,k=0;

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

第 12 页 共 16 页

k++ ;

while (kif (k%3==0) goto loop ; } } loop:

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

编程题:

1.输入两个正整数m和n,求其最大公约数和最小公倍数。

2.输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。 3.求 (即求1!+2!+3!+…+19!+20!)。 4.打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。

5.编写程序,求s=1+2+3+……+n,直到累加和大于或等于5000为止,输出s及

n的值。

6.编写程序输出如下图形。 * ** *** **** *****

(1)#include \"stdio.h\" main()

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

printf(\"please input two numbers:\\n\"); scanf(\"%d,%d\

if(num1while(b!=0)/*利用辗除法,直到b为0为止*/ {

a=b; b=temp; }

printf(\"gongyueshu:%d\\n\

第 13 页 共 16 页

temp=a%b;

printf(\"gongbeishu:%d\\n\ } (2)

#include #include #include using namespace std; void main() { char c;

int letters=0,space=0,digit=0,others=0; cout<<\"please input some characters\"<if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++; else if(c==' ') space++;

else if(c>='0'&&c<='9') digit++; else others++; }

cout<<\"字母\"<(2)#include \"stdio.h\" main() {char c;

int letters=0,space=0,digit=0,others=0; printf(\"please input some characters\\n\"); while((c=getchar())!='\\n') {

if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++; else if(c==' ') space++;

else if(c>='0'&&c<='9')

第 14 页 共 16 页

digit++; else

others++; }

printf(\"all in all:char=%d space=%d digit=%d others=%d\\n\space,digit,others); }

(3) #include \"stdio.h\" main() {

int i,j;

long a,total=0; for(i=1;i<21;i++) {

a=1;

for(j=1;jtotal+=a; }

printf(\"%d\\n\}

(4) #include

int main() {

int n=0,i=0,j=0,k=0;//n表示这个三位数,i,j,k分别代表百位,十位,个位. for(n=100; n<=999; n++) {

i = n / 100;//i表示百位数 j = (n / 10) % 10;//j表示十位数 k = n % 10;//k表示个位数

第 15 页 共 16 页

if(n == (i*i*i + j*j*j + k*k*k)) {

printf(\"%d \} } }

include main() {

int i,j,k; for(i=1;i<10;i++) for(j=0;j<10;j++) for(k=0;k<10;k++)

if( (i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k))) printf(\"%d%d%d \ }

第 16 页 共 16 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务