循环结构程序设计复习题
一.选择题
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
c) x=1,y=1 d) x=0,y=0
解析:在开始时 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++ ;printf(“%d\n”,num); }
while(num<=2);
}
程序的输出结果是:()
a) 1 b) 1c) 1 d) 1
2 2 2
3 3
4
9. 有以下程序:
main()
{ int x=3;
do
{ printf(“%d”,x-=2); }
while(!(--x));
}
程序的输出结果是:()
a) 1 b) 3 0 c) 1 -2 d) 死循环
10. 有以下程序:
main()
{ int y=10;
do { y--; } while(--y);
printf(“%d\n”,y--);
}
程序的输出结果是:()
a) 1 b) -1 c) 8 d) 0
11. 有以下程序:
main()
{ int x=3,y;
do
{ y=--x;
if( !y) printf(“x”) ;
else printf(“y”) ;
} while(x);
}
程序的输出结果是:()
a) xyx b) yyx c) yxx d) yxy
12. 有以下程序段,此处do-while循环的结束条件是:()
int n=0,p;
do {scanf(“%d”,&p);n++;} while (p!=12345&&n<3);
a) p的值不等于12345并且n的值小于3
b) p的值等于12345并且n的值大于等于3
c) p的值不等于12345或者n的值小于3
d) p的值等于12345或者n的值大于等于3
13. 有以下程序:
main()
{ int a,b,t;
for(a=3,b=0 ;!a==b ;a--,b++)
if(a>b) { t=a;a=b;b=t;}
printf(“%d,%d\n”,a,b);
}
程序的输出结果是:()
a) 4,1 b) 1,4 c) 4,-1 d) -1,4
14. 有以下程序:
main()
{ int x=3,y=0;
do
{ while( !y) y=-x;
} while(x--);
printf(“%d,%d\n”,x,y);
}
程序的输出结果是:()
a) -1,3 b) -1,-3c) 0,0 d) 1,-3
15. 有以下程序:
main()
{ int m,n;
printf(“Enter 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);
}
程序的输出结果是:()
a) m=3 b) m=2 c) m=1 d) m=0
16. 有以下程序:
main()
{ int i,s=1;
for(i=1 ;i<=50 ;i++)
if( !(i%5)&& !(i%3)) s+=i;
printf(“%d\n”,s);
}
程序的输出结果是:()
a) 409 b) 277 c) 1 d) 91
17. 有以下程序:
main()
{ int x=0,y=0,i;
for(i=1 ; ;++i)
{ if(i%2==0) {x++ ;continue ;}
if(i%5==0) {y++ ;break ;}
}
printf(“%d,%d”,x,y);
}
程序的输出结果是:()
a) 2,1 b) 2,2 c) 2,5 d) 5,2
18. 有以下程序:
main()
{ int i=0,a=0;
while(i<30)
{for(;;)
{if((i%10)==0) break;
else i--;}
i+=11; a+=i;
}
printf(“%d\n”,a);
}
程序的输出结果是:()
a) 66 b) 63 c) 33 d) 32
19. 有以下程序:
main()
{ int a,b;
for(a=1,b=1 ;a<=100 ;a++)
{ if(b>=10) break;
if(b%3==1)
{ b+=3; continue; }
}
printf(“%d\n”,a);
}
程序的输出结果是:()
a) 101 b) 6 c) 5 d) 4
20. 有以下程序:
main()
{ int i=0;
for(i+=3 ;i<=5 ;i=i+2)
switch(i%5)
{ case 0: printf(“*”);
case 1: printf(“#”); break;
default: printf(“!”); break;
case 2: printf(“&”);
}
}
程序的输出结果是:()
a) *# b) !& c) !*# d) *#* 二.填空题
1.要求使以下程序段输出10个整数,请填空。
for(i=0;i<=_18_;printf(“%d\n”,i+=2));
2. 执行下面程序段后,k的值是_____0_____。
r=1; n=203; k=1;
do {k*=n%10*r; n/=10; r++;} while(n);
3. 下面程序的输出结果是_1 2 5 10_。
{ int i,x=10;
for(i=1;i<=x;i++)
if(x%i==0) printf(“%d ”,i);
}
4. 下面程序的输出结果是___无定值________。
main()
{ int i,sum;
for(i=1;i<6;i++) sum+=i;
printf(“%d”,sum);
}
5. 下面程序的输出结果是_20__。
main()
{ int i,sum=0;
for(i=2;i<10;i++)
{ if((i%2)!=0) continue;
sum+=i;}
printf(“%d\n”,sum);
}
6.下面程序的输出结果是**!
*!!
__!!!____。
{ int i,j;
for(i=2;i>=0;i--)
{ for(j=1;j<=i;j++) printf(“*”);
for(j=0;j<=2-i;j++) printf(“!”);
printf(“\n”);
}
}
7. 下面程序的输出结果是___1,1____。
main()
{ int i,j=0,a=0;
for(i=0;i<5;i++)
do
{ if(j%3) break;
a++; j++;
} while(j<10);
printf(“%d,%d\n”,j,a);
}
8. 下面程序的输出结果是___852____。
main()
{ int x=9;
for(;x>0;)
{ if(x%3==0)
{ printf(“%d”,--x); continue; }
x--;
}
}
9. 下面程序的输出结果是____***#____。
main()
{ int i,j=2;
for(i=1;i<=2*j;i++)
switch(i/j)
{ case 0: case 1: printf(“*”); break;
case 2: printf(“#”);
}
}
三.操作题
1.计算1到10之间的奇数之和以及偶数之和。
2.输出100以内能被3整除且个位数为6的所有整数。
3.找出2至99之间的全部同构数。同构数是这样一组数:它出现在其平方数的右边,例如,5是25右边的数,25是625右边的数,5和25都是同构数。
4.根据以下近似公式求∏值。
2222
1......312116n
++++=π
5.根据以下公式求S 的值。
121......
7151311++-+-=n S
6.根据以下公式求S 的值。
!
1
......!31!211n S ++++=