C流程设计练习题及答案.docx
《C流程设计练习题及答案.docx》由会员分享,可在线阅读,更多相关《C流程设计练习题及答案.docx(24页珍藏版)》请在冰豆网上搜索。
C流程设计练习题及答案
第三章C流程设计练习题及答案
一、选择题
1、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()
A、a<>0B、a!
=0C、a=0D、a
2、若k是int型变量,且有下面的程序片段:
k=-3;if(k<=0)
printf(“####”)
elseprintf(“&&&&”);上面程序的输出结果是()
A、####B、&&&&C、####&&&&D、有语法错误
3、以下不正确的语句为()
A、if(x>y);B、if(x=y)&&(x!
=0)x+=y;
C、if(x!
=y)scanf("%d",&x);elsescanf("%d",&y);
D、if(x4、以下if语句语法正确的是()1--5BDBAC
A、if(x>0)printf("%f",x);elseprintf("%f",-x);
B、if(x>0){x=x+y;printf("%f",x);elseprintf("%f",-x);}
C、if(x>0){x=x+y;printf("%f",x);};elseprintf("%f",-x);
D、if(x>0){x=x+y;printf("%f",x)}elseprintf("%f",-x);}
5、程序的运行结果是()
main()
{inta=5;
if(a++>5)
printf(“%d\n”,a);
else
printf(“%d\n”,a--);
}
A、4B、5C、6D、7
6、下列程序的输出结果是()
main()
{inta=-1,b=1,k;
if((++a<0)&&!
(b--<=0))
printf("%d%d\n",a,b);
else
printf("%d%d\n",b,a);}
A、-11B、01C、10D、00
7、试读程序:
#include
main()
{floatx,y;scanf(“%f”,&x);6--10CCADC
if(x<0.0)
y=0.0;
elseif((x<5.0)&&(x!
=2.0))
y=1.0/(x+2.0);
elseif(x<10.0)
y=1.0/x;
else
y=10.0;
printf(“%f\n”,y);
}
若运行时从键盘输入2.0后回车,则上面程序输出结果是()
A、0.000000B、0.250000C、0.500000D、1.000000
8、程序的输出结果是()
#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
9、请阅读以下程序:
main()
{inta=5,b=0,c=0;
if(a=b+c)
printf("***\n");
elseprinrf("$$$\n");
}以上程序()
A、有语法错不能通过编译B、可以通过编译但不能通过连接
C、输出 ***D、输出$$$
10、以下不正确的if语句形式是()
A、if(x>y&&x!
=y);B、if(x==y)x+=y;
C、if(x!
=y)scanf("%d",&x)elsescanf("%d",&y);D、if(x11、下面程序的运行结果是()
#include
main()
{intk=0;charc='A';
do
{switch(c++)
{case'A':
k++;break;
case'B':
k--;break;
case'C':
k+=2;break;
case'D':
k=k%2;break;
case'E':
k=k*10;break;
default:
k=k/3;
}
k++;
}while(c<'G');
printf("k=%d\n",k);
}
A、k=3B、k=4C、k=2D、k=8
12、以下程序的输出结果是()
main()
{
inta=100,x=10,y=20,ok1=5,ok2=0;
if(xif(y!
=10)
if(!
ok1)
a=1;
elseif(ok2)a=10;
elsea=-1;
printf("%d\n",a);
}
A、100 B、10 C、-1D、1
13、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值为()
if(x>y)此题为神题
z=x;x=y;y=z;
A、x=10,y=20,z=30B、x=20,y=30,z=30
C、x=20,y=30,z=10D、x=20,y=30,z=20
14、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:
else子句总是与()配对。
A、缩排位置相同的ifB、其之前最近的if
C、其之后最近的ifD、同一行上的if
15、以下程序的输出结果是()11--15BCBBB
main()
{intx=2,y=-1,z=2;
if(xif(y<0)
z=0;
Else
z+=1;
printf("%d\n",z);
}
A、3B、2C、1D、0
16、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是()
if(a
if(celseif(aif(belsex=3;
elsex=6;
elsex=7;
A、1B、2C、3D、6
17、设有下面程序段,则下面描述中正确的是()
intk=10;
while(k=0)k=k-1;
A、while循环执行10次B、循环是无限循环
C、循环体语句一次也不执行D、循环体语句执行一次
18、语句while(!
E);中的表达式!
E等价于()16--20BCACD
A、E==0(当发现判断条件值为0时,退出循环)B、E!
=1C、E!
=0D、E==1
19、下面程序段的运行结果是()
intn=0;
while(n++<=2);printf("%d",n);
A、2B、3C、4D、有语法错
20、下面程序的输出结果是()
main()
{intunm=0;
while(num<=2)
{num++;
printf(“%d\n”,num);
}
}
A、012B、0C、123D、1
12
23
21、以下程序段的输出结果是()
main()
{intx=3;
do
printf(“%3d”,x-=2);21--25CCBBC
while(!
(--x));
}
A、1B、30C、1–2D、死循环
22、以下程序段()
x=-1;
do{
x=x*x;
}while(!
x);
A、是死循环B、循环执行二次C、循环执行一次D、有语法错误
23、若有如下语句,则下面程序段()
intx=3;
do{printf("%d\n",x-=2);}while(!
(--x));
A、输出的是1B、输出的是1和-2C、输出的是3和0D、是死循环
24、下列程序运行结果
#include
main()
{
inti=0,sum=1;
do
sum+=i++;
while(i<6);
printf("%d\n",sum);}
A、15B、16C、17D、18
25、以下是死循环的程序段是()
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;
D、i=1;while(i--);
26、下面程序段的运行结果是()
for(y=1;y<10;)
y=((x=3*y,x+1),x-1);
printf("x=%d,y=%d",x,y);
A、x=27,y=27B、x=12,y=13C、x=15,y=14D、x=y=27
27、以下不是无限循环的语句为()26--30CABCB
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;
28、下面程序的运行结果是()
#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);
}
A、7B、8C、9D、10
29、以下描述正确的是()
A、goto语句只能用于退出多层循环B、switch语句中不能出现continue语句
C、只能用continue语句来终止本次循环D、在循环中break语句不能独立出现
30、对for(表达式1;;表达式3)可理解为()
A、for(表达式1;0;表达式2)B、for(表达式1;1;表达式2)
C、for(表达式1;表达式1;表达式3)D、for(表达式1;表达式3;表达式3)
31、下面程序的功能是计算1到50中是7的倍数的数值之和,请选择填空()
#include
main()
{inti,sum=0;
for(i=1;i<=50;i++)
if()sum+=i;
printf("%d",sum);
}
A、(int)(i/7)==i/7B、(int)i/7==i/7C、i%7=0D、i%7==0
32、若i为整型变量,则以下循环体执行次数是()
for(i=2;i==0;)printf("%d",i--);
A、无限次 B、0次C、1次 D、2次
33、下面程序的运行结果是()
#include
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
34、以下for循环体的执行次数是()31--35DBBCD
for(x=0,y=0;(y=123)&&(x<4);x++)
printf("%d",x);
A、是无限循环B、执行0次C、执行4次D、执行3次
35、下面有关for循环的正确描述是()
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判断表达式
C、在for循环中,不能用break语句跳出循环体
D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
二、填空题
1、执行以下程序时,从键盘输入3和4,则输出结果是()
main()
{inta,b,r;
scanf(“%d%d”,&a,&b);
r=a;
if(a
r*=r;
printf(“%d\n”,r);
}
2、以下程序的运行结果是()
main()
{inta=2,b=3,c;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
printf("%d\n",c);
}
3、以下程序的运行结果是(200)
main()
{ints,w,t,a,b,c;
s=w=t=0;
a=-1;b=3;c=3;
if(c>0)s=a+b;
if(a<=0)
{if(b>0)
if(c<=0)w=a-b;
}
elseif(c>0)w=a-b;
elset=c;
printf("%d,%d,%d",s,w,t);
}
4、请阅读下面的程序,为了使输出结果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("s=%d,t=%d",s,t);
}
5、以下程序的运行结果是(554)
#include
main()
{intx,y=1,z;
if(y!
=0)x=5;
printf("%d,",x);
if(y==0)x=4;
elsex=5;
printf("%d,",x);
x=1;
if(y<0)
if(y>0)x=4;
elsex=5;
printf("%d\n",x);
}
6、若运行时输入3,5,/<回车>,则以下程序的运行结果是(0.6)
main()
{floatx,y;
charo;
doubler;
scanf("%f,%f,%c",&x,&y,&o);
switch(o)
{case'+':
r=x+y;break;
case'-':
r=x-y;break;
case'*':
r=x*y;break;
case'/':
r=x/y;break;
}
printf("%f",r);
}
7、有以下语句,请写出输出结果(3)
inti=3;
if(i)
printf("%d",i);
else
printf("%d",-i);
8、当运行时输入:
1992<回车>,则以下程序的运行结果是(1992isaleapyear)
main()
{inty,t;
scanf("%d",&y);
t=((y%4==0&&y%100!
=0)||y%400==0)?
1:
0;
if(t)printf("%dis",y);
elseprintf("%disnot",y);
printf("aleapyear");
}
9、以下程序的运行结果是()
main()
{inta,b,c,d,x;
a=c=0;
x=b=1;
d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)x=15;
elsex=25;
printf("%d,%d",d,x);
}
10、下面程序运行后的结果为(755)
main()
{inta,b,c;
a=2;b=5;c=7;
if(a>c)
b=a;a=c;c=b;
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
}
11、运行下面程序时,分别输入-5,0,16,则运行结果分别是(-101)
main()
{intx,y;
scanf(“%d”,&x);
if(x)
if(x>0)y=1;
elsey=-1;
elsey=0;
printf(“%d”,y);
}
12、写出下面程序的运行结果(#@)
#include
main()
{inta=-1,b=1,c=5;
switch(a>0){
case1:
switch(b-2<0){
case1:
printf("&");break;
case2:
printf("*");break;
}
case0:
switch(c==5){
case0:
printf("!
");break;
case1:
printf("#");break;
default:
printf("%%");
}
default:
printf("@");
}
}
13、下面程序的输出结果为(ae),若将y,z的初值都改为1,运行结果为(cd)
main()
{intx=0,y=2,z=3
switch(x)
{case0:
switch(y==2)
{case1:
pritnf(“a”);break;
case2:
printf(“b”);break;
}
case1:
switch(z)
{case1:
printf(“c”);
case2:
printf(“d”);break;
default:
printf(“e”);
}
}
}
14、若k为整型,则while循环执行(0)次。
k=10;while(k=0)k--;
15、下列程序中while循环执行(无限次)次。
main()
{intk=2;
while(k)printf(“%d”,k);
k--;
printf(“\n”);
}
16、下列程序中while循环执行()次。
main()
{intk=32764;
while(k>0)
{printf(“%d,”,k);k++;
}
printf(“%d\n”,k);
}
17、下列程序的运行结果为()
main()
{inta,b,c,d,m,n;
a=7;b=c=d=5;m=n=0;
for(;a>b;++b)m++;
while(a>++c)n++;
printf(“m=%d,n=%d\n”,m,n);
}
18、执行下面的程序,运行结果为(x=-1k=5)
main()
{intx=100,a=10,k=0,d=5;
while(x--);(当发现判断条件值为0时,退出循环)
printf(“x=%d\n”,x);
do
k++;
while(a>d++);
printf(“k=%d\n”,k);
}
19、下面程序的输出结果是(sum=11)
#include
main()
{intk=0,sum=1;
do
sum+=k++;
while(k<5);
printf(“%d\n”,sum);
}
20、若从键盘输入65,14(表示回车符,)则下面程序的运行结果是(m=1)
#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);
}
21、下面程序的运行结果是()
#include
main()
{inti=1;
while(i<=15)
if(++i%3!
=2)continue;
elseprintf("%d",i);
}
22、当运行以下程序时,从键盘输入-1,0(表示回车),则下面程序的运行结果是()
#include
main()
{inta,b,m,n;
m=n=1;
scanf("%d,%d",&a,&b);
do{if(a>0){m=2*n;b++;}
else{n=m+n;a+=2;b++;}
}while(a==b);
printf("m=%d,n=%d",m,n);
}
23、下面程序的运行结果是()
#include
main()
{inti,x,y;
i=x=y=0;
do{++i;
if(i%2!
=0){x=x+i;i++;}
y=y+i++;
}while(i<=7);
printf(x=%d,y=%d\n,x,y);
}
24、当运行以下程序时,从键盘键入right?
(代表回车),则下面程序的运行结果是()
#include
main()
{charc;
while((c=getchar())!
='?
')
putchar(++c);
}
25、下面程序的输出结果是()
#include
main()
{inti,j,k=19;
while(i=k-1)
{k-=3;
if(k%5==0){i++;continue;}
elseif(k<5)break;
i++;
}
printf("i=%d,k=%d\n",i,k);
}
26、下面程序段是找出整数的所有因子,请填空。
()
#include"math.h"
main()
{inti,x;
scanf("%d",&x);
;
while(i<=fabs(x))
{if(x%i==0)printf("%3d",i);
i++;
}
}
27、当运行以下程序时,从键盘输入12345-1(表示回车),则下面程序的运行结果是()
#include
main()
{intk=0,n;
do
{scanf("%d",&n);
k+=n;
}while(n!
=-1);
printf("k=%d,n=%d\n",k,n);
}
28、下面程序的输出结果是()
main()
{inty=9;
for(;y>0;y--)
{if(y%3==0)
{printf(“%d”,--y);
continue;
}
}
}
29、以下程序的运行结果是()
main()
{inti,k;
for(i=