软件工程硕士C语言选择结构程序设计习题训练Word格式.docx
《软件工程硕士C语言选择结构程序设计习题训练Word格式.docx》由会员分享,可在线阅读,更多相关《软件工程硕士C语言选择结构程序设计习题训练Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
![软件工程硕士C语言选择结构程序设计习题训练Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/31/bd89ccaf-0fad-461d-907c-3768b5cdb0d3/bd89ccaf-0fad-461d-907c-3768b5cdb0d31.gif)
=’a’&
ch<
=’z’)ch=ch-32;
B、if(ch>
&
=’z’)ch=ch-32;
C、ch=(ch>
=’z’)?
ch-32:
’’;
D、ch=(ch>
’a’&
’z’)?
ch;
8.putchar函数可以向终端输出一个()。
A)整型变量表达式B)实型变量值
C)字符串D)字符或字符型变量值
9.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。
如果字符串长度大于5,则输出按方式();
如果字符串长度小于5,则输出按方式()。
A)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出
C)右对齐输出该字符串,左补空格D)输出错误信息
11.阅读以下程序,当输入数据的形式为:
25,13,10<
CR>
(注:
<
表示回车),则正确的输出结果为()。
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”,&
C)scanf(“%c%c%c”,&
D)scanf(“%c%c”,&
13.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假"
的表达式是()
A.(x>
=1)&
(x<
=10)&
(x>
=200)&
=210)
B.(x>
=1)||(x<
=10)||(x>
=200)||(x<
C.(x>
D.(x>
14.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是()
A.‘x’&
‘y’
B.x<
=y
C.x||y+z&
!
y
D.!
y)&
z||1)
15.已知x=43,ch=‘A’,y=0;
则表达式(x>
=y&
‘B’&
y)的值是()
A.0B.语法错误C.1D.“假”
16.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是()
A.A%2==1B.!
(A%2==0)C.!
(A%2)D.A%2
17.以下程序的运行结果是()
#include<
stdio.h>
{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>
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(x<
y){x++;
y++;
21.已知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.以下语句语法正确的是:
()
0)printf(“%f”,x)
elseprintf(“%f”,-x);
B.if(x>
0)
{x=x+y;
printf(“%f”,x);
elseprintf(“%f”,-x)
C.if(x>
{x=xy;
printf(“%f”,x);
};
D.if(x>
printf(“%f”,x)}
23.请阅读以下程序,该程序()
{inta=5,b=0,c=0;
if(a+b+c)printf(“***\n”);
elseprintf(“$$$\n”);
A.有语法错误不能通过编译
B.可以通过编译但不能通过连接
C.输出***
D.输出$$$
24.以下程序的运行结果是()
{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<
b)
if(c<
d)x=1;
elseif(a<
c)
if(b<
d)x=2;
elsex=3;
elsex=6;
elsex=7;
A.1B.2C.3D.6
26.有一函数关系如下:
x-1(x<
y={x(x=0)
x+1(x>
则下面程序段中能正确表示上面关系的是()
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+1;
D.y=x;
if(x<
27.以下程序的输出结果是()
{inta=100,x=10,y=20,ok1=5,ok2=0;
if(x<
y)
if(y!
=10)
if(!
ok1)
a=1;
elseif(ok2)a=10;
a=-1;
printf(“%d\n”,a);
A.1B.0C.-1D.值不确定
28.以下程序的输出结果是()
{intx=2,y=-1,z=2;
if(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>
B.if(x=y)&
(x!
=0)x+=y;
=y)scanf(“%d”,&
x);
elsescanf(“%d”,&
y){x++;
31.main()
{floata,b;
scanf“%f”,&
a};
0.0)b=0.0;
elseif((a<
0.5)&
(a!
=2.0))b=1.0/(a+2.0);
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.以下程序的运行结果是()
{intk=4,a=3,b=2,c=1;
printf(“\n%d\n”,k<
a?
k:
c<
b?
c:
a);
A.4B.3C.2D.1
33intw,x,y,z,m;
则执行以下语句后m的值为()
w=1;
x=2;
y=3;
z=4;
m=(w<
x)?
w:
x;
m=(m<
y)?
m:
y;
m=(m<
z)?
z;
A.1B.2C.3D.4
34若w=1,x=2,y=3,z=4,则表达式w<
x?
y<
z?
y:
z的值是:
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>
printf(“%d\n”,w&
A.0B.1C.0D.0
1111
1100
1110
二、读程序,写运行结果
1.以下的输出结果是【】。
{shorti;
i=-4;
printf(“\ni:
dec=%d,oct=%o,hex=%x,unsigned=%u\n”,i,i,i,i);
2.以下的输出结果是【】。
{charc=‘x’;
printf(“c:
dec=%d,oct=%o,hex=%x,ASCII=%c\n”,c,c,c,c);
3.以下的输出结果是【】。
{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;
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.以下程序的运行结果是__________
{intx=1,y,z;
x*=3+2;
printf(“%d\t”,x);
x*=y=z=5;
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<
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<
b)||!
c&
1的值________
21若a=6,b=4,c=3,则表达式a&
b+c||b-c的值是_______
22若a=5,b=2,c=1,则表达式a-b<
c||b==c的值是________
23.设a=3,b=4,c=5,则表达式a||b+c&
b==c的值是_______
24条件“2<
x<
3或x<
-10”的C语言表达式是____
25以下程序运行结果是_____
{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以下程序的运行结果是:
________
{intx,y,zx=1;
y=1;
z=0;
x=x||y&
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;
b)a=b;
c)a=c;
printf(“%d,%d,%d\n”,a,b,c);
2.阅读下列程序,写出程序的输出结果。
{intx=100,a=10,b=20,ok1=5,ok2=0;
b)if(b!
=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;
}printf(“%d”,s);
}printf(“%d”,s);
D.inta=1,s=0;
E.inta=1,s=0;
switch(a){switch(a){
break;
四、程序设计题
1.编一个程序,输入x的值,按下列公式计算并输出y值;
x(x≤1)
y=2x-1(1<
10)
3x-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.(x<
z)+(y<
z)==1
16.(x<
0)+(y<
0)+(z<
0)==2
17.0
18.1
19.1
20.0
21.1
22.0
23.1
24.2<
x&
x<
3||x<
-10
25.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.
解:
{floatx,y;
printf(“输入数x:
\n”);
scanf(“%f”,&
x);
/*输入*/
if(x<
=1)y=x;
/*计算*/
elseif(1<
10)y=2*x-1;
elsey=3*x-11;
printf(“y=%f\n”,y);
/*输出*/
2.
#include<
voidmain()
{floatx,y,z,t;
printf(“输入三个单精度数x,y,z:
scanf(“%f,%f,%f”,&
t=x;
t)t=y;
if(z<
t)t=z;
printf(“其中最小数=%f\n”,t);