if(y!
=10)
if(!
ok1)
a=1;
else
if(ok2)a=10;
a=-1;
printf("%d\n",a);
}
A.1
B.0
C.-1
D.值不确定
学生答案:
B
参考答案:
C
7、若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果是
#include
main()
{charc;
intv0=0,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
学生答案:
C
参考答案:
D
8、阅读以下程序:
main()
{intx;
scanf("%d",&x);
if(x--<5)printf("%d"'x);
elseprintf("%d"'x++);
}
程序运行后,如果从键盘上输人5,则输出结果是
A.3
B.4
C.5
D.6
学生答案:
D
参考答案:
B
9、与y=(x>0?
1:
x<0?
-1:
0);的功能相同的if语句是
A.if(x>0)y=1;elseif(x<0)y=-1;elsey=0;
B.if(x)if(x>0)y=1;elseif(x<0)y=-1;elsey=0;
C.y=-1if(x)y=1;elseif(x==0)y=0;elsey=-1;
D.y=0if(x>-0)if(x>0)y=1;elsey=-1;
学生答案:
B
参考答案:
A
10、若有定义:
floatw;inta,b;则合法的switch语句是
A.switch(w){case1.0:
printf("*\n");case2.0:
printf("**\n");}
B.switch(a);{case1printf("*\n");case2printf("**\n");}
C.switch(b){casea:
printf("*\n");default:
printf("\n");caseb:
printf("**\n");}
D.switch(a+b){case1:
printf("*\n");case2:
printf("**\n");default:
printf("\n");}
学生答案:
B
参考答案:
D
11、以下程序段的输出结果是()。
inti,j,m=0;
for(i-l;i<=15;i+=4)
for(j=3;j<=19;j+=4)
m++:
pfintf(”%d\n”,m).;
A.12
B.15
C.20
D.25
学生答案:
C
参考答案:
C
12、以下程序的输出结果是()。
#include
main()
{
inty=10;
for(;y>0;y一一)
if(y%3==0)
{
printf(”%d”,一一y);
continue;
}
}
A.741
B.852
C.963
D.8754321
学生答案:
C
参考答案:
B
13、以下叙述正确的是()。
A.do…while语句构成的循环不能用其他语句构成的循环代替
B.只有do…while语句构成的循环能用break语句退出
C.用do…while语句构成循环时,在while后的表达式为零时不一定结束循环
D.用do…while语句构成循环时,在while后的表达式为零时结束循环
学生答案:
B
参考答案:
D
14、有以下程序段:
intk=0:
while(k=1)k++0
while循环执行的次数是()。
A.无限次
B.有语法错,不能执行
C.一次也不执行
D.执行一次
学生答案:
D
参考答案:
A
15、有以下程序:
#include
inta=3;
mmn()
{
intS=0;
{
inta=5:
S+=a++:
}
S+=a++;printf(”%d\n”,S);
}
A.8
B.10
C.7
D.11
学生答案:
A
参考答案:
A
16、以下的for循环()。
for(X=0,Y=0;(Y!
=123)&&(X<4);X++);
A.是无限循环
B.循环次数不定
C.循环执行4次
D.循环执行3次
学生答案:
C
参考答案:
C
17、执行下面程序片段的结果是()。
intX=23;
d0
{
printf(”%d”,X--);
}while(!
X);
A.打印出321
B.打印出23
C.不打印任何内容
D.陷人死循环
学生答案:
B
参考答案:
C
18、请阅读以下程序:
.
#include
main()
{floatx,y;
scanf("%f",&x);
if(x<0.0)y=0.0;
elseif((x<5.0)&&(x!
=2.0))
Y=1.O/(x+2.0);
elseif(x<10.0)Y=1.O/x;
elsey=10.0;
printf(”%f\n”,y);
}
若运行时从键盘上输入2.0(表示回车),则上面程序的输出结果是()。
A.0.000000
B.O.250000
C.O.500000
D.1.000000
学生答案:
B
参考答案:
C
19、在while(x)语句中的x与下面条件表达式等价的是()。
A.x==0
B.x==1
C.x!
=0
D.x!
=1
学生答案:
B
参考答案:
C
20、下面程序段的输出结果是()。
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
学生答案:
A
参考答案:
A
多选题:
判断题:
填空题:
1、#include
main()
{inti=0,j=0,a=6;
if((++i>0)||(j++>0))a++;
printf("i=%d,j=%d,a=%d\n",i,j,a);}
结果:
_____
学生答案:
参考答案:
I=1,j=0,a=7
2、若从键盘输入58,则以下程序输出的结果是________。
main()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
学生答案:
参考答案:
585858
3、下列程序段的输出结果是_____________。
intn='c';
switch(n++)
{default:
printf("error");break;
case'a':
case'A':
case'b':
case'B':
printf("good");break;
case'c':
case'C':
printf("pass");
case'd':
case'D':
printf("warm");
}
学生答案:
参考答案:
passwarm
4、以下程序段的输出结果是______
intk,n,m;
h=10;m=l;k=l;
while(k<=n)
m*=2;
printf("%d\n",m);
学生答案:
参考答案:
程序段无限循环,没有输出结果
5、以下程序的功能是:
从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩
#include
main()
{
floatx,amax,amin;
scanf(”%r.,&x);
amax=x;amin=X;
while(
(1)_______)
{
if(X>amax)amax=x;
if(
(2)________)amin=x;
scanf("%f",&x);
}
printf(”\namax=%f\namin=%f\n”,amax,amin);
}
学生答案:
参考答案:
(1)x>=0
(2)x<>
6、下述程序的运行结果是——。
#include
main()
{
ints=0,k;
for(k=7;k>4;k--)
{
switch(k)
{
case1:
case4:
case7:
S++;break;
case2:
case3:
case6:
break;
case0:
case5:
s+=2;break;
}
}
printf(”s=%d”,s);
}
学生答案:
参考答案:
s=3
7、下面程序的功能是:
计算l—10之间的奇数之和与偶数之和,请填空。
#include
main()
{inta,b,c,i;
a=c:
0:
for(i=0;i<=10;i+:
2)
________;
c+=b:
}
printf(”偶数之和=%d\n”,a);
printf(”奇数之和=%d\n”,c-11);
学生答案:
参考答案:
b=i+1
8、有以下程序:
#include
main()
{charc;
while((c=getchar())!
=’?
’)putchar(--c);
}
程序运行时,如果从键盘输入:
Y?
N?
<回车>,则输出结果为_________。
学生答案:
参考答案:
X
9、下面程序的运行结果是
#include
main()
{inty,a;
y=2;a=1;
while(y--!
=-1)
{do{a*=y;a++;}while(y--);
printf(”%d,%d”,a,y);
}
学生答案:
参考答案:
1,-2
10、下面程序段的运行结果是
i=1;s=3;
do{s+=i++;
if(s%7==0)continue;
else++i:
}while(s<15);
printf(”%d”,i);
学生答案:
参考答案:
8
1、编写程序,从键盘输入年号和月号,计算这一年的这一月共有几天.
学生答案:
参考答案:
main()
{
intyear,month,day=0,leap;
printf("\npleaseinputyearandmonth:
");
scanf("%d,%d",&year,&month);
if(year%4!
=0)
leap=0;
elseif(year%100==0)
if(year%400==0)
leap=1;
else
leap=0;
else
leap=1;
switch(month)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
day=31;break;
case4:
case6:
case9:
case11:
day=30;break;
case2:
{if(leap==1)day=29;elseday=28;break;}
default:
printf("the13thmonth!
?
");
}
printf("Ithas%ddaysin%d/%d",day,year,month);
}
2、编写程序,输入三个整数x,y,z,请把这三个数由小到大输出。
[程序分析]
我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
学生答案:
参考答案:
main()
{
intx,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if(x>y)
{t=x;x=y;y=t;}/*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;}/*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;}/*交换z,y的值*/
printf("smalltobig:
%d%d%d",x,y,z);
}
3、编写程序,输入一个5位数,判断它是不是回文数。
即12321是回文数,个位与万位相同,十位与千位相同。
学生答案:
参考答案:
main()
{
longge,shi,qian,wan,x;
scanf("%ld",&x);
wan=x/10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
if(ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
printf("%disahuiwennumber.",x);
else
printf("%disnotahuiwennumber.",x);
}
4、编写程序,将一个不大于256的十进制正整数转化为8位的二进制数,若不足8位,则在前面补0,例如十进制数2转化位8位二进制数后是00000010,37转化后是00100101。
试求出十进制数5、23、189转化位8位二进制分别是多少?
(要求必须使用循环语句实现)
学生答案:
参考答案:
main()
{
inta,i,b[8];
printf("PleaseInputaNumber<=256:
\n");
scanf("%d",&a);
for(i=1;i<=8;i++)
b[i]=0;
i=8;
while(i>=1)
{b[i]=a%2;
a=a/2;
if(a==0)
break;
i--;
}
for(i=1;i<=8;i++)
printf("%d",b[i]);
printf("\n");
}
本题参考答案:
00000101、00010111、10111101
第6章循环控制
单选题:
1、假定a和b为int型变量,则执行以下语句后b的值为
a=1;b=10;
do
{b=b-a;a++;}
while(b-->0);
A.-3
B.-2
C.-1
D.-4
学生答案:
B
参考答案:
D
2、以下程序运行后,输出结果是
main()
{inty=18,i=0,j,a[8];
do
{a[i]=y%2;i++;
y=y/2;
}while(y>=1);
for(j=i;j>0;j--)printf("%d\n",a[j]);
printf("\n");
}
A.1000
B.11010
C.01001
D.10100
学生答案:
B
参考答案:
C
3、以下程序的输出结果是
main()
{inti;
for(i=1;i<6;i++)
{if(i%2){printf("#");continue;}
printf("*");
}
printf("\n");
A.#*#*#
B.#####
C.*****
D.*#*#*
学生答案:
B
参考答案:
A
4、以下程序段的输出结果是
intx=3;
do
{printf("%3d",x-=2);}
while(!
(--x));
A.1
B.3,0
C.1,-2
D.死循环
学生答案:
A
参考答案:
C
5、阅读下列程序:
main()
{intn[3],i,j,k;
for(i=0;i〈3;i++)
n[i]=0;
k=2;
for(i=0;ifor(j=0;j〈2;j++)
n[j]=n[i]+1;
printf("%d\n",n[1]);}
下述程序运行后输出结果是
A.2
B.1
C.0
D.3
学生答案:
B
参考答案:
D
6、定义如下变量:
intn=10
则下列循环的输出结果是______
while(n>7)
{
n--;
printf("%d\n",n);
}
A.1098
B.987
C.10987
D.9876
学生答案:
B
参考答案:
B
7、以下程序段的输出结果是_____
intx=3;
do
{printf("%3d",x-=2);}
while(!
(--x));
A.1
B.30
C.1-2
D.死循环
学生答案:
C
参考答案:
C
8、运行以下程序后,如果从键盘上输入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=3
B.m=2
C.m=1
D.m=0
学生答案:
A
参考答案:
C
9、以下程序的输出结果是
main()
{inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k=k+p[i]*2;
printf("%d\n",k);
}
A.20
B.21
C.22
D.23
学生答案:
B
参考答案:
B
10、执行语句:
for(i=1;i++<4;)后;变量i的值是()
A.3
B.4
C.5
D.不定
学生答案:
C
参考答案:
C
11、执行语句:
for(i=1;i++<4;)后;变量i的值是
A.3
B.4
C.5
D.不定
学生答案:
B
参考答案:
C
12、以下程序的输出结果是
{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=