软件工程硕士C语言选择结构程序设计习题训练.docx
《软件工程硕士C语言选择结构程序设计习题训练.docx》由会员分享,可在线阅读,更多相关《软件工程硕士C语言选择结构程序设计习题训练.docx(13页珍藏版)》请在冰豆网上搜索。
软件工程硕士C语言选择结构程序设计习题训练
选择结构程序设计
一、单项选择题
1.假定所有变量均已正确定义,下列程序段运行后y的值是()。
inta=0,y=10;
if(a=0)y--;elseif(a>0)y++;elsey+=y;
A.20B.11C.9D.0
2.假定所有变量均已正确定义,下列程序段运行后x的值是()。
a=b=c=0,x=35;
if(!
a)x--;elseif(b);if(c)x=3;elsex=4;
A.34B.4C.35D.3
3.下面的程序片段所表示的数学函数关系是()。
y=-1;
if(x!
=0)if(x>0)y=1;elsey=0;
A.B.C.D.
4.下列各语句序列中,能够且仅输出整型变量a、b中最大值的是()。
A、if(a>b)printf(”%d\n”,a);printf(”%d\n”,b);
B、printf(”%d\n”,b);if(a>b)printf(”%d\n”,a);
C、if(a>b)printf(”%d\n”,a);elseprintf(”%d\n”,b);
D、if(a
5.下列各语句序列中,能够将变量u、s中最大值赋值到变量t中的是()。
A、if(u>s)t=u;t=s;B、t=s;if(u>s)t=u;
C、if(u>s)t=s;elset=u;D、t=u;if(u>s)t=s;
6.下列各语句中,能够输出整型变量a、b中最大值的是()。
A、printf(”%d\n”,(a>b)?
a,b);B、(a>b)?
printf(”%d”,a):
printf(”%d”,b);
C、printf(”%d”,if(a>b)aelseb);D、printf(”%d\n”,(a>b)?
a:
b);
7.下列语句应将小写字母转换为大写字母,其中正确的是()。
A、if(ch>=’a’&ch<=’z’)ch=ch-32;B、if(ch>=’a’&&ch<=’z’)ch=ch-32;
C、ch=(ch>=’a’&&ch<=’z’)?
ch-32:
’’;D、ch=(ch>’a’&&ch<’z’)?
ch-32:
ch;
8.putchar函数可以向终端输出一个()。
A)整型变量表达式B)实型变量值
C)字符串D)字符或字符型变量值
9.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。
如果字符串长度大于5,则输出按方式();如果字符串长度小于5,则输出按方式()。
A)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出
C)右对齐输出该字符串,左补空格D)输出错误信息
11.阅读以下程序,当输入数据的形式为:
25,13,10(注:
表示回车),则正确的输出结果为()。
main()
{intx,y,z;
scanf(“%d%d%d”,&x,&y,&z);
printf(“x+y+z=%d\n”,x+y+z);
}
A)x+y+z=48B)x+y+z=35C)x+z=35D)不确定值
12.根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为()。
main()
{charch1,ch2,ch3;
输入语句
printf(“%c%c%c”,ch1,ch2,ch3);
}
输出形式:
ABC
输入形式:
AB
A)scanf(“%c%c%c”,&ch1,&ch2,&ch3);
B)scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);
C)scanf(“%c%c%c”,&ch1,&ch2,&ch3);
D)scanf(“%c%c”,&ch1,&ch2,&ch3);
13.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是()
A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B.(x>=1)||(x<=10)||(x>=200)||(x<=210)
C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)
14.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是()
A.‘x’&&‘y’
B.x<=y
C.x||y+z&&!
y
D.!
(xz||1)
15.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!
y)的值是()
A.0B.语法错误C.1D.“假”
16.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是()
A.A%2==1B.!
(A%2==0)C.!
(A%2)D.A%2
17.以下程序的运行结果是()
#include
main()
{inta,b,d=241;a=d/100%9;b=(-1)&&(-1);
printf(“%d,%d”,a,b);}
A.6,1B.2,1C.6,0D.2,0
18.执行以下语句后a的值为()
inta,b,c;
a=b=c=1;++a||++b&&++c;
A.错误B.0C.2D.1
19.执行以下语句后a的值为(),b的值()
inta=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
A.5B.0C.2D.1
A.6B.0C.1D.4
20.以下不正确的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(x21.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是()
if(x>y)z=x;x=y;y=z;
A.x=10,y=20,z=30
B.x=20,y=30,z=30
C.x=20,y=30,z=10
D.x=20,y=30,z=20
22.以下语句语法正确的是:
()
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=xy;printf(“%f”,x);};
elseprintf(“%f”,-x);
D.if(x>0)
{x=x+y;printf(“%f”,x)}
elseprintf(“%f”,-x);
23.请阅读以下程序,该程序()
main()
{inta=5,b=0,c=0;
if(a+b+c)printf(“***\n”);elseprintf(“$$$\n”);}
A.有语法错误不能通过编译
B.可以通过编译但不能通过连接
C.输出***
D.输出$$$
24.以下程序的运行结果是()
main()
{intm=5;
if(m++>5)printf(“%d\n”,m);elseprintf(“%d\n”,m--);}
A.4B.5C.6D7
25.当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
26.有一函数关系如下:
x-1(x<0)
y={x(x=0)
x+1(x>0)
则下面程序段中能正确表示上面关系的是()
A.y=x+1;if(x>=0)if(x==0)y=x;elsey=x-1;
B.y=x-1if(x!
=0)if(x>0)y=x+1;elsey=x;
C.if(x<=0)if(x<0)y=x-1;elsey=x;elsey=x+1;
D.y=x;if(x<=0)if(x<0)y=x-1;elsey=x+1;
27.以下程序的输出结果是()
main()
{inta=100,x=10,y=20,ok1=5,ok2=0;
if(xif(y!
=10)
if(!
ok1)
a=1;
elseif(ok2)a=10;
a=-1;printf(“%d\n”,a);}
A.1B.0C.-1D.值不确定
28.以下程序的输出结果是()
main()
{intx=2,y=-1,z=2;
if(xif(y<0)z=0;
elsez+=1;
printf(“%d\n”,z);}
A.3B.2C.1D.0
29.为了避免在嵌套的条件语句if--else中产生二义性,C语言规定:
else子句总是与()配对。
A.缩进排位置相同的if
B.其之前最近的if
C.其之后最近的if
D.以上说法都不准确
30.以下不正确的语句为()
A.if(x>y);
B.if(x=y)&&(x!
=0)x+=y;
C.if(x!
=y)scanf(“%d”,&x);elsescanf(“%d”,&y);
D.if(x31.main()
{floata,b;scanf“%f”,&a};
if(a<0.0)b=0.0;
elseif((a<0.5)&&(a!
=2.0))b=1.0/(a+2.0);
elseif(a<10.0)b=1.0/x;
elseb=10.0;
printf(“%f\n”,b);}
若程序运行时输入为2.0,则上面程序的输出结果是()
A.0.000000B.0.500000C.1.000000D.0.250000
32.以下程序的运行结果是()
main()
{intk=4,a=3,b=2,c=1;
printf(“\n%d\n”,kk:
c
c:
a);}
A.4B.3C.2D.1
33intw,x,y,z,m;则执行以下语句后m的值为()
w=1;x=2;y=3;z=4;
m=(ww:
x;m=(mm:
y;
m=(mm:
z;
A.1B.2C.3D.4
34若w=1,x=2,y=3,z=4,则表达式ww:
yy:
z的值是:
()
A.4B.3C.2D.1
35执行以下程序段后的输出结果是:
()
intw=3,z=7,x=10;
printf(“%d\n”,x>10?
x+100:
x-10);
printf(“%d\n”,w++||z++);
printf(“%d\n”,!
w>z);
printf(“%d\n”,w&&z);
A.0B.1C.0D.0
1111
1100
1110
二、读程序,写运行结果
1.以下的输出结果是【】。
main()
{shorti;
i=-4;
printf(“\ni:
dec=%d,oct=%o,hex=%x,unsigned=%u\n”,i,i,i,i);
}
2.以下的输出结果是【】。
main()
{charc=‘x’;
printf(“c:
dec=%d,oct=%o,hex=%x,ASCII=%c\n”,c,c,c,c);
}
3.以下的输出结果是【】。
main()
{intx=1,y=2;
printf(“x=%dy=%d*sum*=%d\n”,x,y,x+y);
printf(“10Squaredis:
%d\n”,10*10);
}
4.假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空。
a+=【】;b=a-【】;a-=【】;
5.若x为int型变量,则执行以下语句后的x值为【】。
x=7;x+=x-=x+x;
6.结构化程序设计规定的三种基本结构是结构、结构和结构。
7.若有定义语句inta=25,b=14,c=19;以下语句的执行结果是。
if(a++<=25&&b--<=2&&c++)printf(“***a=%d,b=%d,c=%d\n”,a,b,c);
elseprintf(“***a=%d,b=%d,c=%d\n”,a,b,c);
8.以下两条if语句可合并成一条if语句
。
if(a<=b)x=1;elsey=2;
if(a>b)printf(“***y=%d\n”,y);
elseprinft(“***x=%d\n”,x);
9.下列程序的功能是输入一个正整数,判断是否能被3或7整除,若能整除,输出“YES”,
若不能整除,输出“NO”。
请为程序填空。
voidmain()
{intk;
scanf(“%d”,&k);
if()printf(“YES\n”);elseprintf(“NO\n”);
}
10.当a=3,b=2,c=1时,表达式f=a>b>c的值是______
11当a=5,b=4,c=2时,表达式a>b!
=c的值是______
12.以下程序的运行结果是__________
main()
{intx=1,y,z;
x*=3+2;printf(“%d\t”,x);
x*=y=z=5;printf(“%d\t”,x);
x=y==z;printf(“%d\n”,x);}
13.设y为int型变量,请写出描述“y是奇数”的表达式____
14C语言提供的三种逻辑运算符是
15设x,y,z均为int型变量写出“x或y中有且仅有一个小于z”的表达式
16.设intx,y,z;请描述“x,y和z中有两个为负数”的表达式
17.已知A=7.5,B=2,c=3.6,表达式A>B&&C>A||A
C>B的值是____
18.若a=6,b=4,c=2,则表达式!
(a-b)+c-1&&b+c/2的值是______
19.若a=2,b=4,则表达式(x=a)||(y=b)&&0的值是______
20若a=1,b=4,c=3,则表达式!
(a
c&&1的值________
21若a=6,b=4,c=3,则表达式a&&b+c||b-c的值是_______
22若a=5,b=2,c=1,则表达式a-b23.设a=3,b=4,c=5,则表达式a||b+c&&b==c的值是_______
24条件“225以下程序运行结果是_____
main()
{inta1,a2,b1,b2;inti=5,j=7,k=0;
a1=!
k;a2=i!
=j;
printf(“a1=%d\ta2=%d\n”,a1,a2);
b1=k&&j;b2=k||j;
printf(“b1==%d\tb2=%d\n”,b1,b2);}
26以下程序的运行结果是:
________
main()
{intx,y,zx=1;y=1;z=0;
x=x||y&&z;printf(“%d,%d”,x,x&&!
y||z);}
27有intx,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值是____
三、运行结果题
1.阅读程序,写出运行结果。
voidmain()
{inta=10,b=4,c=3;
if(a
if(aprintf(“%d,%d,%d\n”,a,b,c);
}
2.阅读下列程序,写出程序的输出结果。
voidmain()
{intx=100,a=10,b=20,ok1=5,ok2=0;
if(a
=15)if(!
ok1)x=1;
elseif(ok2)x=10;
elsex=-1;
printf(“%d\n”,x);
}
3.写出下列程序段输出结果
intk,a=1,b=2;
k=(a++==b)?
2:
3;printf(“%d”,k);
4.分别写出下列5个程序段的输出结果.
a)inta=1,s=0;B.inta=1,s=0;C.inta=1,s=0;
switch(a){switch(a){switch(a){
case1:
s+=1;case2:
s+=2;default:
s+=3;
case2:
s+=2;case1:
s+=1;case2:
s+=2;
default:
s+=3;default:
s+=3;case1:
s+=1;
}printf(“%d”,s);}printf(“%d”,s);}printf(“%d”,s);
D.inta=1,s=0;E.inta=1,s=0;
switch(a){switch(a){
case1:
s+=1;break;default:
s+=3;break;
case2:
s+=2;break;case2:
s+=2;break;
default:
s+=3;case1:
s+=1;
}printf(“%d”,s);}printf(“%d”,s);
四、程序设计题
1.编一个程序,输入x的值,按下列公式计算并输出y值;
x(x≤1)
y=2x-1(13x-11(10≤x)
2.编一个程序,输入三个单精度数,输出其中最小数。
第四章选择结构程序设计参考答案
一、单项选择题
1.A2.B3.C4.C5.B6.D7.B8.D9.B、C11.D12.A
13.C14.D15.A16.D17.B18.C19B、A20.C21.B22.B
23.C24.C25.B26.B27.C28.B29.D30.B31.B32.A
33.A34.D35.C
二、读程序,写运行结果
1.i:
dec=-4,oct=177774,hex=fffc,unsigned=65532
2.c:
dec=120,oct=170,hex=78,ASCII=x
3.x=1y=2*sum*=310Squaredis:
100
4.bba-b
5.-14
6.顺序选择循环
7.26,13,19
8.if(a>b){y=2,printf(“***y=%d\n”,y);}else{x=1;printf(“***x=%d\n”,x);}
9.(k%3==0)||(k%7==0)
10.0
11.1
12.5251
13.y%2!
=0
14.&&||!
15.(x16.(x<0)+(y<0)+(z<0)==2
17.0
18.1
19.1
20.0
21.1
22.0
23.1
24.225.a1=1a2=1b1=0b2=1
26.1,0
27.1
三、运行结果题
1.10,4,3
2.-1
3.3
4.6,4,4,1,3
四、程序设计题
1.
解:
voidmain()
{floatx,y;
printf(“输入数x:
\n”);scanf(“%f”,&x);/*输入*/
if(x<=1)y=x;/*计算*/
elseif(1elsey=3*x-11;
printf(“y=%f\n”,y);/*输出*/
}
2.
解:
#include
voidmain()
{floatx,y,z,t;
printf(“输入三个单精度数x,y,z:
\n”);scanf(“%f,%f,%f”,&x,&y,&z);
t=x;if(yprintf(“其中最小数=%f\n”,t);
}