循环结构练习题Word文件下载.docx
《循环结构练习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《循环结构练习题Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。
(B)3
(C)4
(D)有语法错
7、设有程序段
t=0;
while
(1)
{
t++;
if(t<
3)break;
}
t;
程序运行结果是(B)
(A)0
(B)1
(C)2
(D)3
8、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。
当输入一对相等数时结束循环,①处应选择(B)
#include<
iostream.h>
voidmain()
inta,b,t;
cin>
>
a>
b;
while(①)
{
if(a>
b){t=a;
b=t}
cout<
cin>
}
(A)!
a=b(B)a!
=b
(C)a==b
(D)a=b
9、下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,①处应选择(C)②处应选择(A)
intm=0,n=0;
charc;
while((①)!
='
\n'
)
if(c>
A'
&
c<
Z'
)m++;
a'
z'
)n++;
Cout<
m<
n?
(②)
①(A)c==getchar()
(B)getchar()
(C)c=getchar()
(D)cin>
c
②(A)n:
m
(B)m:
n
(C)m:
(D)n:
10、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。
其中y变成A,z变成B。
请选择①(D)②(C)
while((c=getchar())!
{
①;
if(c>
'
+2)
②;
}
①(A)c+=2
(B)c-=32
(C)c=c+32+2
(D)c-=30
②(A)c='
B'
(B)c='
(C)c-=26
(D)c=c+26
11、下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择①(B)
inta,max=0;
a;
if(max<
a)max=a;
cout<
max;
①(A)a==0
(B)a
(C)!
a==1
(D)!
a
12、下面程序的运行结果是(C)
intnum=0;
while(num<
=2)
{num++;
num;
(A)1
2
(C)1
3
(D)1
4
14、C语言中while和do-while循环的主要区别是(A)
(A)do-while的循环体至少无条件执行一次
(B)while的循环控制条件比do-while的循环控制条件严格
(C)do-while允许从外部转到循环体内(D)do-while的循环体不能是复合语句
15、以下能正确计算1×
2×
3×
...×
10的程序段是(C)
(A)do{i=1;
s=1;
s=s*i;
i++;
}while(i<
=10);
(B)do{i=1;
s=0;
(C)i=1;
do{s=s*i;
(D)i=1;
s=0;
16、以下程序段(C)
x=-1;
do{x=x*x;
}while(!
x);
(A)是死循环
(B)循环执行二次
(C)循环执行一次
(D)有语法错误
18、若有如下语句
intx=3;
do
{
cout<
(x-=2)<
endl;
(--x));
则上面程序段(B)
(A)输出的是1
(B)输出的是1和-2(C)输出的是3和0
(D)是死循环
19、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。
①(B)②(C)
#include<
intn,sum=0;
n=2345;
do{
sum=sum+①;
n=②;
}while(n);
sum;
①(A)n%10
(B)(n%10)*(n%10)
(C)n/10
(D)(n/10)*(n/10)
②(A)n/1000
(B)n/100
(D)n%10
24、若运行以下程序时,从键盘输入ADescriptor〈CR〉(〈CR〉表示回车),则下面程序的运行结果是(D)
intv0=0,v1=0,v2=0;
switch(c=getchar())
case'
:
case'
e'
E'
i'
I'
o'
O'
u'
U'
v1+=1;
default:
v0+=1;
v2+=1;
}while(c!
);
”v0=”<
v0<
”,v1=”<
v1<
”,v2=”<
v2<
(A)v0=7,v1=4,v2=7
(B)v0=8,v1=4,v2=8
(C)v0=11,v1=4,v2=11
(D)v0=12,v1=4,v2=12
25、下面程序的运行结果是(B)
#include<
inta=1,b=10;
do{b-=a;
a++;
}while(b--<
0);
”a=”<
”,b=”<
(A)a=3,b=11
(B)a=2,b=8
(C)a=1,b=-1
(D)a=4,b=9
26、下面有关for循环的正确描述是(D)
(A)for循环只能用于循环次数已经确定的情况
(B)for循环是先执行循环体语句,后判断表达式
(C)在for循环中,不能用break语句跳出循环体
(D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
27、对for(表达式1;
;
表达式3)可理解为(B)
(A)for(表达式1;
0;
表达式3)
(B)for(表达式1;
1;
(C)for(表达式1;
表达式1;
(D)for(表达式1;
表达式3;
28、若i为整型变量,则以下循环执行次数是(B)
for(i=2;
i==0;
)cout<
i--;
(A)无限次
(B)0次
(C)1次
(D)2次
29、以下for循环的执行次数是(C)
for(x=0,y=0;
(y=123)&
(x<
4);
x++);
(A)是无限循环
(B)循环次数不定
(C)执行4次
(D)执行3次
30、以下不是无限循环的语句为(A)
(A)for(y=0,x=1;
x>
++y;
x=i++)i=x;
(B)for(;
x++=i);
(C)while
(1){x++;
}(D)for(i=10;
i--)sum+=i;
31、下面程序段的运行结果是(C)
for(y=1;
10;
)y=((x=3*y,x+1),x-1);
"
x="
x<
y="
y);
(A)x=27,y=27
(B)x=12,y=13
(C)x=15,y=14
(D)x=y=27
32、下面程序段的运行结果是(D)
for(x=3;
x<
6;
x++)cout<
((x%2)?
("
**%d"
):
##%d\n"
),x);
(A)**3
##4
**5
(B)##3
**4
##5
(C)##3
**4##5
(D)**3##4
33、下列程序段不是死循环的是(C)
(A)inti=100;
i=i%100+1;
if(i>
100)break;
);
(C)intk=0;
do{++k;
}while(k>
=0);
(D)ints=36;
while(s);
--s;
34、执行语句for(i=1;
i++<
4;
后变量i的值是(C)
(A)3
(B)4
(C)5
(D)不定
36、下面程序的功能是计算1至50中是7的倍数的数值之和,请选择填空。
①(D)
inti,sum=0;
for(i=1;
i<
=50;
i++)
if(①)sum+=i;
(A)(int)(i/7)==i/7
(B)(int)i/7==i/7
(C)i%7=0
(D)i%7==0
37、下面程序的功能是计算1至10之间的奇数之和及偶数之和。
请选择填空。
①(B)②(B)
inta,b,c,i;
a=c=0;
for(i=0;
=10;
i+=2)
{a+=i;
①;
c+=b;
偶数之和="
奇数之和="
②);
①(A)b=i--
(B)b=i+1
(C)b=i++
(D)b=i-1
②(A)c-10
(B)c
(C)c-11
(D)c-b
38、下面程序的运行结果是(B)
inti;
=5;
switch(i%5)
case0:
*"
;
break;
case1:
#"
\n"
case2:
(A)#&
*
(B)#&
&
(C)#
(D)#&
*
39、下面程序的运行结果是(D)
intx,i;
=100;
x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
cout<
(A)3981
(B)4284
(C)2668
(D)2870
43、下面程序的运行结果是(D)
inti,b,k=0;
b=i%2;
while(b-->
=0)k++;
printf("
%d,%d"
k,b);
(A)3,-1
(B)8,-1
(C)3,0
(D)8,-2
44、以下正确的描述是(B)
(A)continue语句的作用是结束整个循环的执行
(B)只能在循环体内和switch语句体内使用break语句
(C)在循环体内使用break语句或continue语句的作用相同
(D)从多层循环嵌套中退出时,只能使用goto语句
45、下面程序段(D)
for(t=1;
t<
t++)
scanf("
%d"
&
if(x<
0)continue;
%3d"
t);
(A)当x<
0时整个循环结束
(B)x>
=0时什么也不输出
(C)printf函数永远也不执行
(D)最多允许输出100个非负整数
46、下面程序段(C)
x=3;
do{
y=x--;
if(!
y){printf("
x"
continue;
}while(1<
=x<
(A)将输出##
(B)将输出##*
(C)是死循环
(D)含有不合法的控制表达式
47、以下是死循环的程序段是(C)
(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;
while(i--);
48、以下描述正确的是(C)
(A)goto语句只能用于退出多层循环
(B)switch语句中不能出现continue语句
(C)只能用continue语句来终止本次循环
(D)在循环中break语句不能独立出现
53、下面程序的运行结果是(B)
inta,b;
for(a=1,b=1;
a++)
if(b>
=20)break;
if(b%3==1){b+=3;
b-=5;
%d\n"
a);
(A)7
(B)8
(C)9
(D)10
54、下面程序的运行结果是(B)
inti,j,x=0;
2;
x++;
for(j=0;
j<
=3;
j++)
if(j%2)continue;
x++;
x=%d\n"
x);
(A)x=4
(B)x=8
(C)x=6
(D)x=12
55、下面程序的运行结果是(A)
#include"
iostream.h"
if(i%2)printf("
elsecontinue;
printf("
$\n"
(A)*#*#*#$
(B)#*#*#*$
(C)*#*#$
(D)#*#*$
56、下面程序的运行结果是(A)
inti,j,a=0;
if(j%2)break;
a++;
a++;
(A)4
(B)5
(C)6
(D)7
二、填空题
57、下面程序段是从键盘输入的字符中统计数字字符的个数,用换行结束循环,请填空。
intn=0,c;
c=getchar();
while(________)//c!
/n'
if(________)n++;
//c>
0'
9'
c=getchar();
60、下面程序的功能是用“辗转相除法”求两个正整数的最大公约数。
请填空。
intr,m,n;
%d%d"
m,&
n);
if(m<
n)________;
//r=m,m=n,n=r
r=m%n;
while(r){m=n;
n=r;
r=________;
}//m%n
n);
62、下面程序的运行结果是________。
//254
inta,s,n,count;
a=2;
n=1;
count=1;
while(count<
=7){n=n*a;
s=s+n;
++count;
s=%d"
s);
63、当运行以下程序时,从键盘输入China#〈CR〉(〈CR〉表示回车),则下面程序的运行结果是________。
//5,5
intv1=0,v2=0;
charch;
while((ch=getchar())!
#'
switch(ch)
h'
v1++;
v2++;
%d,%d\n"
v1,v2);
64、执行下面程序段后,k值是________。
//36
intk=1,n=263;
do{k*=n%10;
n/=10;
}while(n);
65、下面程序段中循环体的执行次数是________。
//3
inta=10;
intb=0;
do{b+=2;
a-=2+b;
}while(a>
66、下面程序段的运行结果是________。
//**
x=2;
do{printf("
x--;
x==0);
67、下面程序段的运行结果是________。
//-5
i=1;
a=0;
s=1;
do{a=a+s*i;
s=-s;
i++;
}while(i<
printf("
a=%d"
69、下面程序的功能是统计正整数的各位数字中零的个数,并求各位数字中的最大者。
intn,count,max,t;
count=max=0;
t=________;
//n%10
if(t==0)++count;
elseif(max<
t)________;
//max=t
n/=10;
count=%d,max=%d"
count,max);
75、当运行以下程序时,从键盘输入-10〈CR〉(〈CR〉表示回车),则下面程序的运行结果是________。
//m=4n=2
inta,b,m,n;
m=n=1;
a,&
b);
0){m=2*n;
b++;
else{n=m+n;
a+=2;
}while(a==b);
m=%dn=%d"
m,n)
}
79、若for循环用以下形式表示:
for(表达式1;
表达式2;
表达式3)循环体语句
则执行语句for(i=0;
3;
i++)printf("
时,表达式1执行________次,表达式3执行________次。
//13
80、下面程序的功能是计算1-3+5-7+...-99+101的值,请填空。