C语言习题五循环.docx
《C语言习题五循环.docx》由会员分享,可在线阅读,更多相关《C语言习题五循环.docx(12页珍藏版)》请在冰豆网上搜索。
![C语言习题五循环.docx](https://file1.bdocx.com/fileroot1/2022-11/25/70881631-d51c-443c-a5ca-540d5f38ccea/70881631-d51c-443c-a5ca-540d5f38ccea1.gif)
C语言习题五循环
习题五
一.选择题
1.下面程序段
intk=2;
while(k=0){printf(“%d”,k);k--;}
则下面描述中正确的是。
A)while循环执行10次B)循环是无限循环
C)循环题语句一次也不执行D)循环体语句执行一次
2.下述程序段中,与其他程序段的作用不同。
A)k=1;B)k=1;
while
(1){Repeat:
s+=k;s+=k;
k=k+1;if(++k<=100)
if(k>100)break;gotoRepeat
}printf(“\n%d”,s);
printf(“\n%d”,s);
C)intk,s=0;D)k=1;
for(k=1;k<=100;s+=++k);do
printf(“\n%d”,s);s+=k;
while(++k<=100);
printf(“\n%d”,s);
3.以下程序段的循环次数是。
for(i=2;i==0;)printf(“%d”,i--);
A)无限次B)0次C)1次D)2次
4.下面程序的输出结果是。
main()
{charc=’A’;
intk=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=3B)k=4C)k=2D)k=0
5.下面程序的输出结果是。
main()
{intx=9;
for(;x>0;x--){
if(x%3==0){
printf(“%d”,--x);
continue;
}
}
}
A)741B)852C)963D)
6.以下不是死循环的程序段是。
A)inti=100;B)for(;;);
while
(1){
i=i%100+1;
if(i>100)break;
}
C)intk=0;D)ints=36;
do{++k;}while(k>=0);while(s);--s;
7.下述程序段的运行结果是。
inta=1,b=2,c=3,t;
while(a
printf(“%d,%d,%d”,a,b,c);
A)1,2,0B)2,1,0C)1,2,1D)2,1,1
8.下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择 填空。
main()
{intm=0,n=0;
charc;
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)
9.下述语句执行后,变量k的值是。
intk=1;
while(k++<10);
A)10B)11C)9D)无限循环,值不定
10.下面程序的输出结果是。
main()
{intk=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=3B)k=0,m=5C)k=1,m=3D)k=1,m=5
11.下面for循环语句。
inti,k;
for(i=0,k=-1;k=1;i++,k++)
printf(“***”);
A)判断循环结束的条件非法B)是无限循环
C)只循环一次D)一次也不循环
12.语句while(!
E);括号中的表达式!
E等价于。
A)E==0B)E!
=1C)E!
=0D)E==1
13.以下是死循环的程序段是。
A)for(i=1;;){
if(i++%2==0)continue;
if(i++%3==0)break;
}
B)i=32767;
do{if(i<0)break;}while(++i);
C)for(i=1;;)if(++I<10)continue;
D)i=1;while(i--);
14.执行语句for(i=1;i++<4;);后变量i的值是。
A)3B)4C)5D)不定
15.以下程序段。
x=-1;
do
{x=x*x;}
while(!
x);
A)是死循环B)循环执行2次C)循环执行1次D)有语法错误
16.下面程序的功能是在输入的一批正数中求最大者,输入0结束循环,选择填空。
main()
{inta,max=0;
scanf(“%d”,&a);
while(【】){
if(max scanf(“%d”,&a);
}
printf(“%d”,max);
}
A)a==0B)aC)!
a==1D)!
a
17.以下不是死循环的语句是。
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;
18.下面程序段的运行结果是。
x=y=0;
while(x<15)y++,x+=++y;
printf(“%d,%d”,y,x);
A)20,7B)6,12C)20,8D)8,20
19.以下for循环的执行次数是。
for(x=0,y=0;(y=123)&&(x<4);x++);
A)无限循环B)循环次数不定C)4次D)3次
20.若运行以下程序时,输入2473↙,则程序的运行结果是。
main()
{intc;
while((c=getchar())!
=’\n’)
switch(c-‘2’){
case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
printf(“\n”);
}
A)B)C)D)
二.填空题
1.C语言三个循环语句分别是语句,语句和语句。
2.至少执行一次循环体的循环语句是。
3.循环功能最强的循环语句是。
5.程序段
for(a=1,i=-1;-1
{a++;printf(“%2d”,a);};
printf(“%2d”,i);
的运行结果是。
三.判断题
1.在while循环中允许使用嵌套循环,但只能是嵌套while循环。
【】
2.在实际编程中,do-while循环完全可以用for循环替换。
【】
3.continue语句只能用于三个循环语句中。
【】
4.在不得已的情况下(例如提高程序运行效率),才使用goto语句。
【】
5.语句标号与C语言标识符的语法规定是完全一样的。
【】
6.for循环的三个表达式可以任意省略,while,do-while也是如此。
【】
7.do-while允许从外部转到循环体内。
【】
8.while的循环控制条件比do-while的循环控制条件严格。
【】
9.do-while循环中,根据情况可以省略while。
【】
10.do-while循环的while后的分号可以省略。
【】
四.程序阅读题
1.写出下面程序运行的结果。
main()
{intx,i;
for(i=1;i<=100;i++){
x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf(“%d”,x);
}
}
2.写出下面程序运行的结果。
main()
{inti,b,k=0;
for(i=1;i<=5;i++){
b=i%2;
while(b--=0)k++;
}
printf(“%d,%d”,k,b);
}
3.写出下面程序运行的结果。
main()
{inta,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);
}
4.写出下面程序运行的结果。
main()
{intk=1,n=263;
do{k*=n%10;n/=10;}while(n);
printf(“%d\n”,k);
}
5.写出下面程序运行的结果。
main()
{inti=5;
do{
switch(i%2){
case4:
i--;break;
case6:
i--;continue;
}
i--;i--;
printf(“%d”,i);
}while(i>0);
}
6.写出下面程序运行的结果。
main()
{inti,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);
}
}
}
7.写出下面程序运行的结果。
main()
{inta=10,y=0;
do{
a+=2;y+=a;
if(y>50)break;
}while(a=14);
printf(“a=%dy=%d\n”,a,y);
}
8.写出下面程序运行的结果。
main()
{inti,j,k=19;
while(i=k-1){
k-=3;
if(k%5==0){i++;continue;}
elseif(k<5)break;
i++;
}
printf(“i=%d,k=%d\n”,i,k);
}
9.写出下面程序运行的结果。
main()
{inty=2,a=1;
while(y--!
=-1)
do{
a*=y;
a++;
}while(y--);
printf(“%d,%d\n”,a,y);
}
10.写出下面程序运行的结果。
main()
{inti,k=0;
for(i=1;;i++){
k++;
while(k
k++;
if(k%3==0)gotoloop;
}
}
loop:
printf(“%d,%d\n”,i,k);
}
六.程序填空题
1.下述程序用“碾转相除法”计算两个整数m和n的最大公约数。
该方法的基本思想是计算m和n相除的余数,如果余数为0则结束,此时的被除数就是最大公约数。
否则,将除数作为新的被除数,余数作为新的除数,继续计算m和n相除的余数,判断是否为0,等等,请填(3)空使程序完整。
main()
{intm,n,w;
scanf(“%d,%d”,&m,&n);
while(n){
w=【1】;
m=【2】;
n=【3】;
}
printf(“%d”,m);
}
2.下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填(3)空使程序完整。
main()
{intn,k=1,s=0,m;
for(n=1;n<=100;n++){
k=1;s=0;
【1】;
while(【2】){
k*=m%10;
s+=m%10;
【3】;
}
if(k>s)printf(“%dd”,n);
}
}
3.下面程序接受键盘上的输入,直到按↙键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格,请填(3)空使程序完整。
main()
{
charcx,front=’\0’;
while(【1】!
=’\n’){
if(cx!
=’’)putchar(cx);
if(cx==’’)
if(【2】)
putchar(【3】)
front=cx;
}
七.编程题
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
2.求(即求1!
+2!
+3!
+…+19!
+20!
)。
4.有一个分数数列:
求出这个数列前20项之和。
5.提高题:
打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。