第五章 循环结构
1.若输入字符串:abcde<回车>,则以下while循环体将执行【 】次。
While((ch=getchar())= ='e') printf("*");
2.有如下程序
main()
{ int n=9;
while(n>5){ n-- ;printf("%d",n);}
该程序段的输出结果是
A)987 B)876 C)8765 D)9876
3.运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为
A)2,0 B)5,0 C)5,5 D)2,5
# include<stdio.h>
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);}
4.请读程序:
main()
{ int num=0 ;
while(num<=2){ num ;printf("%d\n",num);}}
上面程序的输出结果是
A) 1 B)1 C)1 D)1
2 2 2 4
3 3
5.请读程序:
#include “math.h”
main()
{ float x ,y ,z ;
scanf("%f %f ",&x,&y) ;
z=x/y;
while(1)
{ if(fabs(z)>1.0) {x=y; y=z; z=x/y;}
else break;}
printf("%f\n",y);}
若运行时从键盘上输入3.6 2.4<CR>,则输出结果是
A)1.500000 B)1.600000 C)2.000000 D)2.400000
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.定义如下变量:
int n=10;
则下列循环的输出结果是
while(n>7)
{ n--; printf("%d\n",n); }
A)10 B)9 C)10 D)9
9 8 9 8
8 7 8 7
7 6
8.以下程序段的输出结果是
int x=3;
do { printf("%3d",x-=2);} while(!(--x));
A)1 B)3 0 C)1 -2 D)死循环
9.以下叙述正确的是
A) do-while语句构成的循环不能用其它语句构成的循环来代替。
B) do-while语句构成的循环只能用break语句退出。
C) do-while语句构成的循环,在while后的表达式为非零时结束循环。
D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。
10.以下程序的输出结果是
A)20 B)31 C)321 D)210
main( )
{ int n=4;
while(n--)printf("%d ",--n); }
11.设有如下程序段:
int i=0 , sum=1 ;
do { sum = i ;} while(i<6) ;
printf("%d\n" , sum) ;
上述程序段的输出结果是【 】。
12.执行下面程序片段的结果是
int x=23 ;
do { printf ("%2d" ,x--) ;} while (!x) ;
A) 打印出321 B) 打印出23
C) 不打印任何内容 D) 陷入死循环
13.假定a和b为int型变量 ;则执行以下语句后b的值为
a=1 ; b=10 ;
do{ b-=a ; a ; }while (b--<0);
A)9 B)-2 C)-1 D)8
14.以下循环体的执行次数是【 】。
A)3 B)2 C)1 D) 0
main()
{ int i ,j ;
for(i=0,j=1;i<=j 1;i =2 ,j--)
printf("%d \n",i);}
15.以下程序的输出结果是
A)编译不通过,无输出 B)aceg
C)acegi D)abcdefghi
main( )
{ int i;
for(i='A';i <'I ';i ,i )
printf("%c",i 32) ;
printf(" \n") ; }
16.以下程序的输出结果是
A)10 1 9 2 B)9 8 7 6
C)10 9 9 0 D)10 10 9 1
main( )
{ int x=10 ,y=10 ,i ;
for(i=0;x>8;y= i)
printf("%d%d ",x--,y); }
17.请读程序:
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);}
上面程序的输出结果是
A)7 B)8 C)9 D)10
18.有如下程序
main()
{ int i ,sum ;
for(i=1;i<=3;sum ) sum = i;
printf(" %d\n",sum); }
该程序的执行结果是
A)6 B)3 C)不确定 D)0
19.若X是int型变量,且有下面的程序片段:
for(X=3;X<6;X )
printf((X%2)?("**%d"):("##%d\n"),X);
上面程序片段的输出结果是
A)**3 B)##3 C)##3 D)**3##4
##4 **4 **4##5 **5
**5 ##5
20.设j为int型变量 ;则下面for循环语句的执行结果是
for( j=10;j>3;j--)
{ if(j%3)j--;
--j; --j;
printf("%d " ;j); }
A)63 B)74 C)62 D)73
21.下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。
#include <stdio.h>
main()
{ int a , b , c , i ;
a=c=0;
for(i=0;i<10;i =2)
{ a =i;【 】 ;c =b;}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11);}
22.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。
# include <stdio.h>
main()
{ int i , j ;
for(i=0; 【 】 ; i )
{ j=i*10 6;
if( 【 】 ) continue;
printf("%d",j);}
}
23.执行下面的程序后,a的值为
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; }
}
A)7 B)8 C)9 D)10
24.下面程序的输出是
A)741 B)852 C)963 D)875421
main()
{ int y=9;
for( ;y>0;y--)
{ if(y%3==0) { printf("%d",--y);continue;}
}
}
25.设x和y均为int型变量,则执行下面的循环后,y值为
for(y=1 ,x=1;y<=50;y )
{ if(x>=10)}break;
if (x%2==1){ x =5; continue;}
x-=3;
}
A)2 B)4 C)6 D)8
26.下面有关 for循环的正确描述是
A) for循环只能用于循环次数已经确定的情况
B) for循环是先执行循环体语句,后判断表达式
C) 在for循环中,不能用break语句跳出循环体
D) for循环的循环体语句中,可包含多条语句,但必须用花括号括起来
27.以下正确的描述是
A) continue语句的作用是结束整个循环的执行
B) 只能在循环体内和switch语句体内使用break语句
C) 在循环体内使用break语句或continue语句的作用相同
D) 从多层循环嵌套中退出时,只能使用goto语句
28.有以下程序
main()
{ int i ,j;
for(j=10;j<11;j )
for(i=9;i<=j-1;i ) printf("%d" ;j);
}
输出结果是
A)11 B)10 C)9 D)10 11
29.下列程序的运算结果是
A)4 B)2 C)1 D)0
main()
{ int i ,j ,m=0 ,n=0;
for(i=0; i<2; i )
for(j=0; j<2; j )
if(j>=i) m=1; n ; printf("%d \n",n); }
30.以下描述正确的是
A) goto语句只能用于退出多层循环
B) swtich语句中不能出现continue语句
C) 只能用continue语句来终止本次循环
D) 在循环中break语句不能独立出现
31.以下程序的输出结果是
A)#*#*# B)##### C)***** D)*#*#*
main( )
{ int i;
for(i=1;i <6 ;i )
{ if(i%2) { printf("#");continue;}
printf("*"); }
printf("\n");
}
32. 以下程序的输出结果是
#include <stdio.h>
main()
{ int i=0,a=0;
while(i<20)
{ for(;;)
{ if((i%10)==0) break;
else i--;
}
i =11; a =i;
}
printh("%d\n",a);
}
A) 21 B) 32 C) 33 D) 11
33. 以下程序的输出结果是【 】 。
main()
{int s,i;
for(s=0,i=1;i<3;i ,s =i);
printf("%d\n",s);
}
34. 以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:
main()
{ int n,k;
float score ,sum,ave;
sum=0.0;
for(n=1;n<=10;n )
{ for(k=1;k<=4;k )
{ scanf(“%f”,&score); sum =score;}
ave=sum/4.0;
printf(“NO%d:%f\n”,n,ave);
}
}
上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是
A) sum=0.0; B) sum =score;
C) ave=sun/4.0; D) printf(“NO%d:%f\n”,n,ave);
35. 有以下程序段
int n=0,p;
do{scanf(“%d”,&p);n ;}while(p!=12345 &&n<3);
此处do—while循环的结束条件是
A) P的值不等于12345并且n的值小于3
B) P的值等于12345并且n的值大于等于3
C) P的值不等于12345或者n的值小于3
D) P的值等于12345或者n的值大于等于3
36. 有以下程序:
#include <stdio.h>
main()
{ char c;
while((c=getchar( ))!=’?’) putchar(--c);
}
程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为 [10] 。
37. 以下函数的功能是计算s=1 …… ,请填空。
double fun(int n)
{ double s=0.0,fac=1.0; int i;
for(i=1,i<=n;i )
{ fac=fac [12] ;
s=s 1/fac;
}
return s;
}