第6章 循环控制.docx
《第6章 循环控制.docx》由会员分享,可在线阅读,更多相关《第6章 循环控制.docx(17页珍藏版)》请在冰豆网上搜索。
第6章循环控制
第六章循环控制
一单项选择题
1.下面程序段的运行结果是()。
intn=0;
while(n++<=2);
printf(“%d”,n);
A)2 B)3 C)4 D)有语法错
2.设有程序段:
t=0;
while(printf(“*”))
{t++;
if(t<3)break;
}
下面描述正确的是()。
A)其中循环控制表达式与0等价
B)其中循环控制表达式与'0'等价
C)其中循环控制表达式是不合法的
D)以上说法都不对
3.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空()。
#include
main()
{inta,b,t;
scanf(“%d%d”,&a,&b);
while(___________)
{if(a>b)
{t=a;a=b;b=t;}
printf(“%d,%d\n”,a,b);
scanf("%d%d",&a,&b);
}
}
A)!
a=b B)a!
=b C)a==b D)a=b
4.C语言中,while和do-while循环的主要区别是()。
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件更严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
5.对以下程序段描述正确的是()。
x=-1;
do
{x=x*x;}
while(!
x);
A)是死循环 B)循环执行二次
C)循环执行一次 D)有语法错误
6.以下描述中正确的是()。
A)do-while循环中循环体内不能使用复合语句
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C)在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作
D)do-while循环中,根据情况可以省略while
7.若有如下语句
intx=3;
do{printf(“%3d”,x-=2);}while(!
(--x));
则上面程序段()。
A)输出的是1 B)输出的是1和-2
C)输出的是3和0 D)是死循环
8.下面有关for循环的正确描述是()。
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环的循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
9.对for(表达式1;;表达式3)可理解为()。
A)for(表达式1;0;表达式3) B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3) D)for(表达式1;表达式3;表达式3)
10.若i为整型变量,则以下循环执行次数是()。
for(i=2;i==0;)printf(“%d”,i--);
A)无限次 B)0次 C)1次 D)2次
11.以下不是无限循环的语句为()。
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;
12.下面程序段的运行结果是()。
for(y=1;y<10;)y=((x=3*y,x+1),x-1);
printf(“x=%d,y=%d”,x,y);
A)x=27,y=27 B)x=12,y=13 C)x=15,y=14 D)x=y=27
13.执行语句for(i=1;i++<4;);后变量i的值是()。
A)3 B)4 C)5 D)不定
14.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。
下面程序是求这堆零件总数,请选择填空()。
#include
main()
{inti;
for(i=100;i<200;i++)
if((i-2)%4==0)
if(!
((i-3)%7))
if(______)
printf(“%d”,i);
}
A)i%9=5 B)i%9!
=5 C)(i-5)%9!
=0 D)i%9==5
15.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空()。
#include
main()
{inti=0,j,k;
do{i++;k=316-13*i;}while(_______);
j=k/11;
printf(“316=13*%d+11*%d”,i,j);
}
A)k/11 B)k%11 C)k/11==0 D)k%11==0
16.下面程序的运行结果是()。
#include
main()
{inty=10;
do{y--;}while(--y);
printf(“%d\n”,y--);
}
A)-1 B)1 C)8 D)0
17.若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果是()。
#include
main()
{charc;
intv0=1,v1=0,v2=0;
do{
switch(c=getchar())
{case‘a’:
case‘A’:
case‘e’:
case‘E’:
case‘i’:
case‘I’:
case‘o’:
case‘O’:
case‘u’:
case‘U’:
v1+=1;
default:
v0+=1;v2+=1;
}
}while(c!
=’\n’);
printf(“v0=%d,v1=%d,v2=%d\n”,v0,v1,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
18.下面程序的运行结果是()。
#include
main()
{inta=1,b=10;
do
{b-=a;a++;}
while(b--<0);
printf(“a=%d,b=%d\n”,a,b);
}
A)a=3,b=11 B)a=2,b=8
C)a=1,b=-1 D)a=4,b=9
19.以下程序的输出结果是()。
main()
{intnum=0;
while(num<=2)
{num++;printf(“%d\n”,num);}
}
A)1 B)1 C)1 D)l
2 2 2
3 3
4
20.设有程序段
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是()。
A)while循环执行10次 B)循环是无限循环
C)循环体语句一次也不执行 D)循环体语句执行一次
21.设有以下程序段
intx=0,s=0;
while(!
x!
=0)s+=++x;
printf("%d",s);
则()。
A)运行程序段后输出0 B)运行程序段后输出1
C)程序段中的控制表达式是非法的 D)程序段执行无限次
22.语句while(!
E);中的表达式!
E等价于()。
A)E==0 B)E!
=1 C)E!
=0 D)E==1
23.下面程序段的运行结果是()。
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
24.下面程序段的运行结果是()。
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
25.以下程序段的执行结果是()。
inta,y;
a=10;y=0;
do
{a+=2;y+=a;
printf("a=%dy=%d\n",a,y);
if(y>20)break;
}while(a=14);
A)a=12y=12 B)a=12y=12
a=14y=16 a=16y=28
a=16y=20
a=18y=24
C)a=12y=12 D)a=12y=12
a=14y=26
a=14y=44
26.t为int类型,进人下面的循环之前,t的值为0,则以下叙述中正确的是()。
while(t=l)
{……}
A)循环控制表达式的值为0 B)循环控制表达式的值为1
C)循环控制表达式不合法 D)以上说法都不对
27.有以下程序段
intk=0;
while(k=1)k++;
while循环执行的次数是()。
A)无限次 B)有语法错,不能执行
C)一次也不执行 D)执行1次
28.以下程序执行后sum的值是()。
main()
{inti,sum;
for(i=1;i<6;i++)sum+=i;
printf("%d\n",sum);
}
A)15 B)14 C)不确定 D)0
29.有以下程序段
intx=3;
do
{printf("%d",x-=2);}
while(!
(--x));
其输出结果是()。
A)1 B)30 C)1-2 D)死循环
30.若输入12、8,以下程序的输出结果是()。
main()
{inta,b,num1,num2,temp;
scanf(“%d,%d”,&num1,&num2);
if(num1>num2)
{temp=num1;
num1=num2;
num2=temp;
}
a=num1,b=num2;
while(b!
=0)
{temp=a%b;
a=b;
b=temp;
}
printf(“%d,%d”,a,num1*num2/a);
}
A)4,24 B)3,24 C)5,25 D)4,25
31.以下程序的输出结果是()。
#include
#include
main()
{ints=1;
floatn=1,pi=0;
doublet=1;
while(fabs(t)>=2e-6)
{pi+=t;
n+=2;
s=-s;
t=s/n;
}
pi*=4;
printf(“pi=%.6f\n”,pi);
}
A)3.141592 B)1 C)2e-6 D)0
32.以下程序的输出结果是()。
main()
{inti,f1,f2;
f1=f2=1;
for(i=0;i<4;i++)
{printf(“%d%d”,f1,f2);
f1+=f2;
f2+=f1;
}
}
A)12345678 B)1123581321
C)1135791113 D)13579111315
33.下列叙述中,正确的一条是()。
A)语句“goto12;”是合法的
B)for(;;)语句相当于while
(1)语句
C)if(表达式)语句中,表达式的类型只限于逻辑表达式
D)break语句可用于程序的任何地方,以终止程序的执行
34.以下程序的输出结果是()。
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);
}
A)7 B)8 C)9 D)10
35.以下的for循环()
for(x=0,y=0;(y!
=123)&&(x<4);x++);
A)是无限循环 B)循环次数不定
C)执行4次 D)执行3次
36.C语言中()
A)不能使用do-while语句构成的循环
B)do-while语句构成的循环必须用break语句才能退出
C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环
37.以下程序的输出结果是()。
main()
{inti;
for(i=1;i<=5;i++)
{if(i%2)
printf(“*”);
else
continue;
printf(“#”);
}
printf(“$\n”);
}
A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$
38.有以下程序,从第一列开始输入数据2473(代表一个回车符),则程序的输出结果为()。
#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”);
}
A)668977 B)668966 C)6677877 D)6688766
39.执行以下程序片段的结果是()。
intx=23;
do
{printf(“%d”,x--);}
while(!
x);
A)打印出321 B)打印出23
C)不打印任何内容 D)陷入死循环
40.若x是int型变量,则执行以下程序片段的结果是()。
for(x=3;x<6;x++)printf((x%2)?
(“**%d”):
(“##%d\n”),x);
A)**3##4**5 B)##3**4##5 C)##3 D)**3##4
**4##5**5
41.有以下程序,若运行时从键盘输入3.62.4(代表一个回车符),则程序的输出结果为()。
#include
#include
main()
{floatx,y,z;
scanf(“%f%f”,&x,&y);
z=x/y;
while
(1)
{if(fabs(z)>1.0)
{x=y;y=z;z=x/y;}
elsebreak;
}
printf(“%f\n”,y);
}
A)1.500000 B)1.600000 C)2.000000 D)2.400000
42.以下程序的输出结果是()。
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf(“%d%d”,x--,y);
}
A)10192 B)9876 C)10990 D)101091
43.以下程序的输出结果是()。
main()
{intn=4;
while(n--)
printf(“%d”,--n);
}
A)20 B)31 C)321 D)210
44.以下程序的输出结果是()。
main()
{inti;
for(i=’A’;i<’I’;i++,i++)
printf(“%c”,i+32);
}
A)编译通不过,无输出 B)aceg C)acegi D)abcdefghi
45.若i、j已定义为int型,则以下程序段中内循环体的总的执行次数是()。
for(i=5;i;i--)
for(j=0;j<4;j++){}
A)20 B)24 C)25 D)30
46.若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
47.以下程序的执行结果是()。
main()
{inti,x;
for(i=1;i<=50;i++)
{x=i;
if(++x%2==0)
if(x%3==0)
if(x%7==0)
printf(“%d”,i);
}
}
A)28 B)27 C)42 D)41
48.以下程序的执行结果是()。
main()
{inti,j;
for(j=10;j<11;j++)
{for(i=9;iif(!
(j%i))break;
if(i>=j-1)printf(“%d”,j);
}
}
A)11 B)10 C)9 D)1011
49.在下列选项中,没有构成死循环的程序段是()。
A)inti=100; B)for(;;);
while
(1)
{i=i%100+1;
if(i>100)break;
}
C)intk=1000; D)ints=36;
do{++k;}while(s);--s;
while(k>=10000);
50.以下程序的输出结果是()。
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;
}
x++;
}
printf(“x=%d\n”,x);
}
A)x=4 B)x=8 C)x=6 D)x=12
51.运行以下程序后,如果从键盘上输入6514<回车>,则输出结果是()。
main()
{intm,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
52.以下程序的输出结果是()。
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)4 B)2 C)1 D)0
53.以下程序执行后sum的值是()。
main()
{inti,sum=0;
for(i=1;i<=3;sum++)sum+=i;
printf("%d\n",sum);
}
A)6 B)3 C)死循环 D)0
二填空题
1.以下程序运行后的输出结果是。
main()
{inti=10,j=0;
do
{j=j+i;i--;}
while(i>2);
printf("%d\n",j);
}
2.设有以下程序:
main()
{intn1,n2;
scanf("%d",&n2);
while(n2!
=0)
{n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序运行后,如果从键盘上输入1298,则输出结果为。
3.若输入字母b,程序输出结果为;若输入字符*,程序将怎样。
#include
main()
{charc1,c2;
c1=getchar();
while(c1<97||c1>122)
c1=getchar();
c2=c1-32;
printf("%c,%c\n",c1,c2);
}
4.用以下程序计算1到100的整数的累加和。
main()
{inti=1,sum=;
for()
{sum+=i;
i++;
}
printf("sum=%d\n",);
}
5.以下程序的功能是:
从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。
请填空。
main()
{floatx,amax,amin;
scanf(“%f”,&x);
amax=x;
amin=x;
while()
{if(x>amax)amax=x;
if()amin=x;
scanf(“%f”,&x);
}
printf("amax=%f\namin=%f\n",amax,amin);
}
6.设i、j、k均为int型变量,则执行完下面的for循环后,k的值为。
for(i=0,j=10;i<=j;i++,j--)k=i+j;
7.下面程序的功能是:
计算1到10之间的奇数之和及偶数之和,请填空。
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);
}