C语言循环结构选择题新.docx
《C语言循环结构选择题新.docx》由会员分享,可在线阅读,更多相关《C语言循环结构选择题新.docx(79页珍藏版)》请在冰豆网上搜索。
C语言循环结构选择题新
1、若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是
for(i=5;i;i--)
for(j=0;j<4;j++){...}
A)20B)25
C)24D)30
for(i=0,j=10;i<=j;i++,j--)k=i+j;
2、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为
A)12B)10
C)11D)9
3、当执行以下程序段时
x=-1;
do{x=x*x;}while(!
x);
A)循环体将执行一次
B)循环体将执行两次
C)循环体将执行无限次
D)系统将提示有语法错误
4、若输入字符串:
abcde<回车>,则以下while循环体将执行多少次。
while((ch=getchar())=='e')printf("*");
A)5B)4
C)6D)1
5、有以下程序段
intk=0;
while(k=1)k++;
while循环执行的次数是
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行一次
6、语句while(!
e);中的条件!
e等价于()。
A)e==0B)e!
=1
C)e!
=0D)~e
7、以下for循环是()。
for(x=0,y=0;(y!
=123)&&(x<4);x++)
A)无限循环B)循环次数不定
C)执行4次D)执行3次
8、C语言中while和do-while循环的主要区别是()。
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
9、以下叙述正确的是()。
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
10、对下面程序段,描述正确的是()。
for(t=1;t<=100;t++)
{scanf("%d",&x);
if(x<0)continue;
printf("%d\n",t);
}
A)当x<0时,整个循环结束
B)当x>=0时,什么也不输出
C)printf函数永远也不执行
D)最多允许输出100个非负整数
11、在下列选项中,没有构成死循环的程序段是
A)inti=100;
while
(1)
{i=i%100+1;
if(i>100)break;
}
B)for(;;);
C)intk=1000;
do{++k;}while(k>=1000);
D)ints=36;
while(s)--s;
12、以下程序的输出结果是
main()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=10)break;
if(b%5==1){b+=5;continue;}}
printf("%d\n",a);}
A)101B)6
C)4D)3
13、以下程序的输出结果是()。
#include
main()
{
inti;
for(i=1;i<=5;i++)
if(i%2)
printf("*");
elsecontinue;
printf("#");
printf("$\n");
}
A)***#$B)#*#*#*$
C)*#*#*#$D)**#*$
14、以下程序段的输出结果是()。
intk,j,s;
for(k=2;k<6;k++,k++)
{s=1;
for(j=k;j<6;j++)
s+=j;}
printf("%d\n",s);
A)1B)9
C)11D)10
15、以下程序段的输出结果是()。
intk,n,m;
n=10;m=1;k=1;
while(k<=n){m*=2;k+=4;}
printf("%d\n",m);
A)4B)16
C)8D)32
16、设有如下程序段:
inti=0,sum=1;
do
{sum+=i++;}
while(i<6);
printf("%d\n",sum);
上述程序段的输出结果是()。
A)11B)16
C)22D)15
17、以下程序的输出结果是()。
#include
main()
{intcount,i=0;
for(count=1;count<=4;count++)
{i+=2;printf("%d",i);}
}
A)20B)246
C)2468D)2222
18、下面程序的输出结果是()。
main()
{unsignedintnum,k;
num=26;k=1;
do{
k*=num%10;
num/=10;
}while(num);
printf("%d\n",k);
}
A)2B)12
C)60D)18
19、阅读以下程序:
main()
{intx;
for(x=5;x>0;x--)
if(x--<5)printf("%d,",x);
elseprintf("%d,",x++);}
程序运行后的输出结果是()。
A)4,3,1B)4,3,1,
C)5,4,2D)5,3,1,
20、以下程序的功能是:
从键盘上输入若干个学生的成绩,统计并输出
最高成绩和最低成绩,当输入负数时结束输入。
请填空。
main()
{floatx,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);
}
A)x<=0B)x>0
x>aminx<=amin
C)x>0D)x>=0
x>aminx20、下面程序是计算n个数的平均值,请填空。
main()
{inti,n;
floatx,avg=0.0;
scanf("%d",&n);
for(i=0;i{scanf("%f",&x);
avg=avg+______;}
avg=________;
printf("avg=%f\n",avg);
}
A)iB)x
avg/iavg/n
C)xD)i
avg/xavg/n
21、在执行以下程序时,如果从键盘上输入:
ABCdef<回车>,
则输出为
#include
main()
{charch;
while((ch=getchar())!
='\n')
{if(ch>='A'&&ch<='Z')ch=ch+32;
elseif(ch>='a'&&ch<'z')ch=ch-32;
printf("%c",ch);
}
printf("\n");
}
A)ABCdefB)abcDEF
C)abcD)DEF
22、运行以下程序后,如果从键盘上输入:
6514<回车>,
则输出结果为
main()
{intm,n;
printf("Enterm,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=3B)m=2
C)m=1D)m=0
23、下面程序的输出结果是()。
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
A)10192B)9876
C)10990D)101091
24、有如下程序
main()
{intn=9;
while(n>6){n--;printf("%d",n);}
}
该程序段的输出结果是
A)987B)876
C)8765D)9876
25、函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)
请填空,完成求π的功能。
#include
main()
{doubles=0.0;longinti,n;
scanf("%ld",&n);
for(i=1;i<=n;i++)
s=s+_______;
s=(sqrt(6*s));
printf("s=%e",s);
}
A)1/i*iB)1.0/i*i
C)1.0/(i*i)D)1.0/(n*n)
26、设有以下程序
main()
{intn1,n2;
scanf("%d",&n2);
while(n2!
=0)
{n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序运行后,如果从键盘上输入1298,则输出结果为()。
A)892B)8921
C)89D)921
27、以下函数的功能是:
求x的y次方,请填空。
main()
{inti,x,y;
doublez;
scanf("%d%d",&x,&y);
for(i=1,z=x;iz=z*______;
printf("x^y=%e\n",z);
}
A)i++B)x++
C)xD)i
28、下面程序的运行结果是()。
main()
{inta,b;
a=-1;
b=0;
do{
++a;
++a;
b+=a;
}while(a<9);
printf("%d\n",b);
}
A)34B)24
C)26D)25
29、执行下面程序段后,k的值是()。
inti,j,k;
for(i=0,j=10;ik=i+j;
A)9B)11
C)8D)10
30、下面程序的运行结果是()。
main()
{intm=7,n=5,i=1;
do
{if(i%m==0);
if(i%n==0)
{printf("%d\n",i);break;}
i++;
}while(i!
=0);
}
A)7B)6
C)5D)4
31、下面程序的运行结果是()。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",--i);
}
A)4B)3
C)5D)6
32、以下程序的输出结果是()。
#include
main()
{
intnum=0;
while(num<=2)
{num++;
printf("%d\n",num);}
}
A)1B)1C)1D)1
222
33
4
33、以下程序运行后的输出结果是()。
#include
main()
{ints=0,k;
for(k=7;k>=0;k--)
{switch(k)
{
case1:
case4:
case7:
s++;break;
case2:
case3:
case6:
break;
case0:
case5:
s+=2;break;}
}
printf("s=%d\n",s);
}
A)s=5B)s=1
C)s=3D)s=7
34、以下程序运行后的输出结果是()。
#include
main()
{inti,j;
for(i=4;i>=1;i--)
{printf("*");
for(j=1;j<=4-i;j++)
printf("*");
printf("\n");
}
}
A)*B)****C)*D)****
***********
********
*****
35、有以下程序
#include
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");
}
从第一列开始输入以下数据,代表一个回车符。
2473程序的输出结果是()。
A)668977B)668966
C)66778777D)6688766
36、当从键盘上输入字符“12134211”下面程序的
输出结果是()。
main()
{chars;
intv1=0,v2=0,v3=0,v4=0,k;
for(k=0;k<=7;k++)
{scanf("%c",&s);
switch(s)
{default:
v4++;
case'1':
v1++;
case'3':
v3++;
case'2':
v2++;}
}
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);
}
A)v1=4,v2=2,v3=1,v4=1
B)v1=4,v2=9,v3=3,v4=1
C)v1=5,v2=8,v3=6,v4=1
D)v1=8,v2=8,v3=8,v4=8
37、运行以下程序后,如果从键盘上输入china#<回车>,
则输出结果为
#include
main()
{intv1=0,v2=0;
charch;
while((ch=getchar())!
='#')
switch(ch)
{case'a':
case'h':
default:
v1++;
case'o':
v2++;
}
printf("%d,%d\n",v1,v2);
}
A)2,0B)5,0
C)5,5D)2,5
38、下列程序的输出结果是()。
main()
{inti,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);
}
A)4B)2
C)1D)0
39、下面程序的功能是:
计算1到10之间奇数之和及偶数之和,请填空。
#include
main()
{inta,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);
}
A)i+=2B)i++
C)b=b+1D)b=i+1
40、下面程序的功能是:
输出100以内能被3整除且个位数为6的
所有整数,请填空。
#include
main()
{inti,j;
for(i=0;______;i++)
{j=i*10+6;
if(_______)continue;
printf("%d",j);
}
}
A)i<=10B)i<10
j%3!
=0j/3
C)i<10D)i<=9
j%3!
=0i%3
41、要输出下面的图形,请完善程序。
1
22
333
4444
55555
666666
#include
main()
{inti,j,k;
for(i=1;i<=6;i++)
{
for(j=1;j<=20-2*i;j++)
printf("");
for(k=1;________;k++)
printf("%2d",i);
________________
}
}
A)i<=kB)kprintf("");printf("\n");
C)k<=iD)k<=i
printf("\n");printf("");
42、要输出下面的图形,请完善程序。
1
121
12321
1234321
123454321
#include
main()
{inti,j,k;
for(i=1;i<=5;i++)
{
for(j=1;j<=20-3*i;j++)
printf("");
for(k=1;_________;k++)
printf("%3d",k);
for(__________;k>0;k++)
printf("%3d",k);
printf("\n");
}
}
A)k<=iB)k
k=ik=i-1
C)kk=ik=i-1
43、运行以下程序后,如果从键盘上输入46812-9582-1<回车>,
则输出结果为()。
main()
{intx,i,m;
do
scanf("%d",&x);
while(x<0&&x!
=-1);
m=x;
while(x!
=-1)
{scanf("%d",&x);
if(x>0&&x>m)m=x;}
if(m!
=-1)printf("m=%d\n",m);
}
A)m=-9B)m=2
C)m=58D)m=-1
44、运行以下程序后,如果从键盘上输入12,8<回车>,
则输出结果为()。
main()
{inta,b,n1,n2,t;
scanf("%d,%d",&n1,&n2);
if(n1>n2)
{t=n1;n1=n2;n2=t;}
a=n1;b=n2;
while(b!
=0)
{t=a%b;
a=b;
b=t;}
printf("%d,%d\n",a,n1*n2/a);
}
A)2,6B)4,24
C)4,12D)8,96
45、下列程序的输出结果是()。
main()
{inti,j,k;
for(i=0;i<=2;i++)
{for(k=1;k<=i;k++)printf("");
for(j=0;j<=3;j++)printf("*");
printf("\n");
}
}
A)****B)****
********
********
C)****D)***
*******
*******
循环
一、选择题
1、设有程序段
intk=10;
while(k=0)k=k-1;
则下面叙述中正确的是(C)
(A)while循环执行10次
(B)循环是无限循环
(C)循环体语句一次也不执行
(D)循环体语句执行一次
2、设有以下程序段
intx=0,s=0;
while(!
x!
=0)s+=++x;
printf("%d",s);
则(B)
(A)运行程序段后输出0
(B)运行程序段后输出1
(C)程序段中的控制表达式是非法的
(D)程序段执行无限次
3、语句while(!
E);中的表达式!
E等价于(A)
(A)E==0
(B)E!
=1
(C)E!
=0
(D)E==1
4、下面程序段的运行结果是(A)
a=1;b=2;c=2;
while(a
printf("%d,%d,%d",a,b,c);
(A)1,2,0
(B)2,1,0
(C)1,2,1
(D)2,1,1
5、下面程序段的运行结果是(D)
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
6、下面程序段的运行结果是(C)
intn=0;
while(n++<=2);printf("%d",n);
(A)2
(B)3
(C)4
(D)有语法错
7、设有程序段
t=0;
while(printf("*"))//printf函数类型是int,返回值表示输出的字符数。
{
t++;
if(t<3)break;
}
下面描述正确的是(D)
(A)其中循环控制表达式与0等价
(B)其中循环控制表达式与'0'等价
(C)其中循环控制表达式是不合法的
(D)以上说法都不对
8、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。
当输入一对相等数时结束循环,①处应选择(B)
#include