}
printf("x=%d,y=%d,a=%d\n",x,y,a);
}
A.x=4,y=4,a=1B.x=5,y=5,a=1
C.x=5,y=4,a=3D.x=5,y=4,a=1
6.若i,j已定义为int类型,则以下程序段中内循环的总的执行次数是()。
for(i=5;i;i--)
for(j=0;j<4;j++)
{…}
A.20B.24C.25D.30
7.请读程序:
#include
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
上面程序的输出结果是()。
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
8.若有以下程序段,w和k都是整型变量
w=k;
LB:
if(w==0)gotoLE;
w--;
printf(〞*〞);
gotoLB;
LE:
则不能与上面程序段等价的循环语句是()。
A.for(w=k;w!
=0;w--)
print(〞*〞);
B.w=k;
while(w--!
=0)
printf(〞*〞);
w++;
C.w=k;
do{w--;printf(〞*〞);}
while(w!
=0);
D.for(w=k;w;--w)printf(〞*〞);
9.下面程序的输出是()。
main()
{
char*s=〞12134211〞;
intk,v1=0,v2=0,v3=0,v4=0;
for(k=0;s[k];k++)
switch(s[k])
{
default:
v4++;
case1:
v1++;
case2:
v2++;
csse3:
v3++;
}
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
10.有以下程序
#include〞stdio.h〞
intabc(intu,intv);
main()
{
intc,a=24,b=16;
c=abc(a,b);
printf(〞%d\n〞,c);
}
intabc(intu,intv)
{
intw;
while(v)
{w=u%v; u=v; v=w;}
returnu;
}
输出结果是()。
A.6B.7C.8D.9
11.在下列选项中,没有构成死循环的程序段是()。
A.inti=100;
while
(1)
{
i=i%100+1;
if(i>100)break;
}
B.for(;;);
C.intk=1000;
do{++k;}while(k>=10000);
D.ints=36;
while(s);
--s;
12.若输入B,以下程序的运行结果为()。
main()
{chargrade;scanf("%c",&grade);
switch(grade)
{case'A':
printf(">=85.");
case'B':
case'C':
printf(">=60.");
case'D':
printf("<60.");
default:
printf("error.");
}
}
A.>=85.B.>=60.C.>=60.<60.error.D.error.
13.列程序运行的情况是()。
main()
{inti=1,sum=0;
while(i<10)sum=sum+1;i++;
printf("i=%d,sum=%d",i,sum);
}
A.i=10,sum=9B.i=9,sum=9C.i=2,sum=1D.运行出现错误
14.有以下语句:
i=1;
for(;i<=100;i++)sum+=i;
与以上语句序列不等价的有()。
A.for(i=1;;i++){sum+=i;if(i==100)break;}
B.for(i=1;i<=100;){sum+=i;i++;}
C.i=1;for(;i<=100;)sum+=i;
D.i=1;for(;;){sum+=i;if(i==100)break;i++;}
15.下面程序的运行结果为()。
main()
{intn;
for(n=1;n<=10;n++)
{if(n%3==0)continue;
printf("%d",n);
}
}
A.12457810B.369C.12D.12345678910
16.下面程序的运行结果是()。
main()
{intx,y,z;
x=0;y=z=-1;
x+=-z---y;
printf("x=%d\n",x);
}
A.x=4B.x=0C.x=2D.x=3
17.标有/**/的语句的执行次数是()。
inty,i;
for(i=0;i<20;i++)
{if(i%2==0)continue;
y+=i;/**/
}
A.20B.19C.10D.9
18.在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式。
A.只能用逻辑表达式B.只能用关系表达式
C.只能用逻辑表达式或关系表达式D.可用任意表达式
19.在以下给出的表达式中,与do-while(E)语句中的(E)不等价的表达式是()。
A.(!
E==0)B.(E>0||E<0)C.(E==0)D.(E!
=0)
20.假定所有变量均已正确定义,下列程序段运行后x的值为()。
k1=1;k2=2;k3=3;x=15;
if(!
k1)x--;
elseif(k2)if(k3)x=4;elsex=3;
A.14B.4C.15D.3
21.执行下面语句的输出为()。
inti=-1;
if(i<=0)printf(“****\n”);
elseprintf(“%%%%\n”);
A.****B.%%%%C.%%%%cD.有错,执行不正确
22.下列程序的输出是()。
#include
main()
{inti;charc;
for(i=0;i<=5;i++)
{c=getchar();putchar(c);
}
}
程序执行时从第一列开始输入以下数据,代表换行符。
u
w
xsta
A.uwxstaB.uC.uD.u
www
xxsxsta
23.下列程序的输出为()。
#include"stdio.h"
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=4B.x=8C.x=6D.x=12
24.下列程序的输出为()。
#include
main()
{inti,j,k=0,m=0;
for(i=0;i<2;i++)
{for(j=0;j<3;j++)k++;k-=j;}
m=i+j;
printf("k=%d,m=%d\n",k,m);
}
A.k=0,m=3B.k=0,m=5C.k=1,m=3D.k=1,m=5
25.在C语言中,为了结束while语句构成的循环,while后一对圆括号中表达式的值应该为()。
A.0B.1C.trueD.非0
26.在C语言中,为了结束由do-while语句构成的循环,while后一对圆括号中表达式的值应为()。
A.0B.1C.trueD.非0
27.下列程序的输出为()。
#include
main()
{intk=0;charc='A';
do
{switch(c++)
{case'A':
k++;break;
case'B':
k--;
case'C':
k+=2;break;
case'D':
k=k%2;continue;
case'E':
k=k*10;break;
default:
k=k/3;
}
k++;
}
while(c<'G');
printf("%d\n",k);
}
A.k=3B.k=4C.k=2D.k=0
28.C语言的if语句嵌套时,if与else的配对关系是()。
A.每个else总是与它上面的最近的if配对
B.每个else总是与最外的if配对
C.每个else与if的配对是任意的
D.每个else总是与它上面的if配对
29.下列程序的输出为()。
#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);
}
A.i=0,j=0,a=6B.i=1,j=1,a=7C.i=1,j=0,a=7D.i=0,j=1,a=7
30.下列程序段的输出结果为()。
main()
{intx=3;
do
{printf("%3d",x-=2);}
while(!
(--x));}
A.1B.30C.1-2D.死循环
3.2填空题:
1.当输入19,2,21时下列程序运行的结果是。
main()
{inta,b,c,max;
printf("pleasescanthreenumbera,b,c:
\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max
if(maxprintf("maxis:
%d",max);
}
2.若输入字母C,程序输出结果为【】;若输入字符*,程序将【等待继续输入,直到输入小写字母。
】。
#include
main()
{charc1,c2;
c1=getchar();
while(c1<97||c1>122)c1=getchar();
c2=c1-32;
printf("%c,%c\n",c1,c2);
}
3.以下程序运行的结果为________。
main()
{inta,b,c,x,y,z;
a=10;b=2;
c=!
(a%b);x=!
(a/b);
y=(a=0);
z=(a=0);
printf("%d,%d,%d,%d\n",c,x,y,z);
}
4.若输入4,程序运行结果为【】,若输入-4,运行结果为【】,若输入10,运行结果为【】.
main()
{intx,y;
scanf("%d",&x);
if(x<1)
{y=x;
printf("x=%d,y=x=%d\n",x,y);
}
elseif(x<10)
{y=2*x-1;
printf("x=%d,y=2*x-1=%d\n",x,y);
}
else
{y=3*x-11;
printf("x=%d,y=3*x-11=%d\n",x,y);
}
}
5.以下程序运行的结果________。
main()
{inti=1,sum=0;
loop:
if(i<=10)
{sum+=i;
i++;
gotoloop;
}
printf("sum=%d\n",sum);
}
6.以下程序运行的结果。
main()
{intx=2,y,z;
x*=3+1;
printf("%d,",x++);
x+=y=z=5;
printf("%d,",x);
x=y==z;
printf("%d\n",x);
}
7.以下程序运行的结果_。
#include
#include
main()
{inti,k,m,n=0;
for(m=1;m<=10;m+=2)
{if(n%10==0)printf("\n");
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k)
{printf("%2d",m);
n++;
}
}
}
8.如果输入‘1’,‘2’,‘3’,‘4’,程序运行输出的是________。
#include
main()
{charc;
inti,k;
k=0;
for(i=0;i<4;i++)
{while
(1)
{c=getchar();if(c>='0'&&c<='9')break;}
k=k*10+c-'0';
}
printf("k=%d\n",k);
}
9.运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为________。
#include
main()
{intv1=0,v2=0;
charch;
while((ch=getchar())!
='#')
switch(ch)
{case'a':
case'h':
default:
v1++;
case'0':
v2++;
}
printf("%d,%d\n",v1,v2);
}
10.程序运行结果是_________。
#include
main()
{inti;
for(i=1;i+1;i++)
{if(i>4){printf("%d\t",i++);break;}
printf("%d\t",i++);
}
}
11.以下程序运行的结果是________。
#include
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);
}
12.以下程序运行的结果是_______。
main()
{inti=1;
while(i<10)
if(++i%3!
=1)continue;
elseprintf("%d",i);
}
13.程序运行的结果是_______。
main()
{intn=0;
while(n++<=1)
printf("%d\t",n);
printf("%d\n",n);
}
14.此程序运行时,输入qwert?
程序的运行结果是_________。
#include
main()
{charc;
while((c=getchar())!
='?
')putchar(++c);
}
15.对以下程序:
当输入6514时,其运行结果是【】。
当输入1463时,其运行结果是【】。
当输入25125时,其运行结果时【】。
#include
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);
}
16.在执行以下程序时,为了使输出结果为t=4,则给a和b输入的值应满足的条件是______。
main()
{ints,t,a,b;
scanf(〞%d,%d〞,&a,&b);
s=1; t=1;
if(a>0) s=s+1;
if(a>b) t=s+t;
elseif(a==b)t=5;
elset=2*s;
printf(〞t=%d\n〞,t);
}
17.求出1000以内的“完全数”。
(提示:
如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。
如:
6的因子是1,2,3而6=1+2+3,则6是个“完数”)。
main()
{inti,a,m;
for(i=1;i<1000;i++)
{for(m=0,a=1;a<=i/2;a++)
if(!
(i%a))【m】;
if【】)printf("%4d",i);
}
}
18.鸡问题:
100元钱买100只鸡,公鸡一只5元钱,母鸡一只3元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡各多少只?
#include
main()
{intcocks,hens,chicks;
cocks=0;
while(cocks<=19)
{hens=0;
while(hens<=33)
{chicks=100.0-cocks-hens;
if(5.0*cocks+3.0*hens+chicks/3.0==100.0)
printf("%d,%d,%d\n",cocks,hens,chicks);
【】;
}
【】;
}
}
19.爱因斯坦的阶梯问题:
设有一阶梯,每步跨2阶,最后余1阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;每步跨6阶,最后余5阶;只有每步跨7阶时,正好到阶梯顶。
问共有多少阶梯。
main()
{intladders=7;
while(【】)ladders+=14;
printf("%d\n",ladders);
}
20.下列程序计算平均成绩并统计90分及以上人数。
main()
{intn,m;
floatgrade,average;
average=n=m=【】;
while(【】)
{scanf("%f",&grade);
if(grade<0)break;
n++;
average+=grade;
if(grade<90)【】;
m++;
}
if(n)printf("%.2f%d\n",average/n,m);
}
21.下列程序计算Fibonacci数列:
1,1,2,3,5,8,13……的前40项。
main()
{intI;longf1,f2;
【】;
for(I=0;I<20;I++)
{printf("%12ld%12ld",f1,f2);
if(I%2)printf("\n");
f1+=f2;
【】;
}
}
22.下列程序判断一个数是否为素数。
#include
#include
main()
{intI,k,m;
scanf("%d",&m);
k=sqrt(;
for(I=2;I<=k;I++)
if(m%I==0)【】;
if(【】)printf("%dyes\n",m);
elseprintf("%dno\n",m);
}
23.求100~499之间的所有水仙花数,即各位数字的立方和恰好等于该数本身的数。
main()
{intI,j,k,m,n;
for(I=1;【】;I++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{【】;
n=I*I*I+j*j*j+k*k*k;
if(【】)
printf("%d",m);
}
}
24.从键盘上输入两个整数m和n,求其最大公约数。
main()
{inta,b,num1,num2,temp;
scanf("%d,%d",&num1,&num2);
if(【】)
{temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!
=0)
{temp=【】;
a=b;
b=temp;
}
printf("%d,%d",a,num1*num2/a);
}
3.3答案及部分解题分析
一.选择题答案
1.A2.D3.A4.D5.D6.A
7.A8.C9.D10.C11.C12.C
13.D14C15.A16.C17.C18.D
19.C20.B21.A22.C23.B24.B
25.A26.A27.B28.A29.C30.C
1.答案:
A
解析:
此题中判断while后面的条件时,先使用n的值再n--,而打印时打印的是n减1
后的值。
所以第一次循环,n=4,执行完后n=2,打印出2;第二次循环,n=2, 经过n—和—n,n变成了0,打印出0;第三次循环时while后面的条件不成立(n=0),所以循环结束。
故输出为20。
2.答案:
D
解析:
第一次循环时打印的x和y的值都是10,然后x通过x—后变成9,因此第二次循环时x=9,而“y=++i”执行完后,y变成1,所以第二次循环时打印的x和y的值是9和1,然后x—变成8;第三次循环时,x>8条件不成立,循环结束。
故D为正确答案。
3.答案:
A
解析:
对于一个不为0的数,!
x即为0,故对于x=-1,while后条件不成立,但是do循环体是先执行的,故等判断条件时,循环体已执行了一次。
4.答案:
D
解析:
此题是一个do-while循环,当y值为1时,while后的条件--y变成0,从而循环结束,这时打印出0,然后y--变成-1。
故D为正确答案。
5