C语言程序设计 第17章选择填空习题及答案Word格式.docx
《C语言程序设计 第17章选择填空习题及答案Word格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计 第17章选择填空习题及答案Word格式.docx(37页珍藏版)》请在冰点文库上搜索。
&
B.%C.=D.>
=
13.设整型变量a的值为3,则计算表达式a---a后,表达式的值为(B)。
A.1B.0C.2D.表达式出错
14.设整型变量a、b、c的值均为2,表达式a---b+++c++的结果是(C)。
A.6B.9C.2D.表达式出错
15.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是(D)。
A.1B.2.5C.2D.2.0
16.下列表达式中符合C语言语法的赋值表达式是(C)。
A.a=4+b++c=a+8B.a=4+b++=a+8
C.a=(4+b,b++,a+8)D.a=4+b,c=a+8
17.若有以下定义:
chara;
intb;
floatc;
doubled;
,则表达式a*b+d-c的值的类型为(D)。
A.intB.floatC.charD.double
1.在内存中存储"
A"
要占2个字节,存储'
要占1个字节。
2.符号常量的定义方法是#define常量名常量。
3.无符号基本整型的数据类型符为unsignedint双精度实型数据类型符为double,字符型数据类型符为char。
4.十进制数673的二进制、八进制和十六进值数分别为1010100001、2412和2A1。
5.在C语言中,书写八进制数时必须加前缀0;
书写十六进制数时必须加前缀0x。
6.在微机上,int型、short型、long型、float型和double型数据一般在内存中分别占2字节、2字节、4字节、4字节和8字节。
7.设有下列运算符:
<
、+、++、&
、>
=,其中优先级最高的是++,优先级最低的是&
。
8.设x、y为int型变量,且x=1,y=2,则表达式1.0+x/y的值为1.0。
9.设整型变量x、y、z均为5,则:
①执行x-=y-z后,x的值为5。
②执行x%=y+z后,x的值为5。
10.数学式
的C语言表达式为a/b*c)。
三、简答题
1.字符常量与字符串常量有什么区别?
2.对于TurboC系统来说,char型变量与int型变量在内存中存储数据的区别是什么?
3.整型变量可细分为哪六类?
4.什么是一个实型数据的规范化指数形式?
5.设x=3.5,a=5,y=6.7,求算术表达式x+a%3*(int)(x+y)%2/4的值。
6.设a=2,b=3,x=4.5,y=1.6,求表达式(float)(a+b)/2+(int)x%inty的值。
7.设整型变量a=12,写出下列表达式运算后a的值。
①a*=2+5②a/=a+a③a+=a-=a*=a
8.写出下列程序的运行结果。
main()
{charc1='
c2='
B'
c3='
C'
c4='
\101'
c5='
\h42'
;
printf("
A%cb%c\t%c\tbc\n"
c1,c2,c3);
\t\b%c%c"
c4,c5);
}
结果:
AAbBCabc
AB
9.写出下面程序的运行结果。
{inti,j,m,n;
i=5;
j=6;
m=++i;
n=--j;
%d,%d,%d,%d"
i,j,m,n);
6,5,6,5
习题三
1.printf()函数输出实数时,使用的格式字符是(C)。
A.%dB.%cC.%fD.%o
2.下面变量说明中(C)是正确的。
A.char:
a,b,c;
B.chara;
b;
c;
C.chara,b,c;
D.chara,b,c
3.putchar()函数可以向终端输出一个(D)。
A.整型变量表达式值B.实型变量值
C.字符串D.字符或字符型变量值
4.阅读以下程序,当输入数据的形式为:
25,13,10〈CR〉,正确的输出结果为(D)。
{intx,y,z;
scanf("
%d%d%d"
&
x,&
y,&
z);
x+y+z=%d\n"
x+y+z);
}
A.x+y+z=48B.x+y+z=35C.x+z=35D.不确定值
5.以下说法正确的是(D)。
A.输入项可以是一个实型常量
B.只有格式控制,没有输入项,也能进行正确输入,如scanf("
a=%d,b=%d"
);
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("
%4.2f"
f);
D.当输入数据时,必须指明变量的地址,如scanf("
%f"
6.以下能正确地定义整型变量a、b和c并为其赋初值5的语句是(C)。
A.inta=b=c=5;
B.inta,b,c=5;
C.inta=5,b=5,c=5;
D.a=b=c=5;
7.已知ch是字符型变量,下面正确的赋值语句是(B)。
A.ch='
a+b'
B.ch='
\xff'
C.ch='
\08'
D.ch="
\"
8.设x、y均为float型变量,则以下不合法的赋值语句是(B)。
A.++x;
B.y=(x%2)/10;
C.x*=y+8;
D.x=y=0;
9.以下格式符中,不能用来输入实型数的是(B)
A.fB.e(E)C.g(G)D.x
10.若floatnum=123.456,以%+10.4d的格式输出,结果正确的是(B)
A.123.456000B.123.4560C.123.4560D.+123.4560
1.以下程序的输出结果是x=1y=2*sum*=3
10squaredis:
100。
{intx=1,y=2;
x=%dy=%d*sum*=%d\n"
x,y,x+y);
10squaredis:
%d\n"
10*10);
2.以下程序的输出结果是a=325x=3.14。
{inta=325;
doublex=3.1415926;
a=%2dx=%7.2f\n"
a,x);
3.假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空:
a+=b;
b=a-b;
a-=b;
4.若x为int型变量,则执行以下语句后x的值是-14。
x=7;
x+=x-=x+x;
5.C语句可以分为五类,含7种控制语句、声明语句、表达式语句、空语句和复合语句。
6.赋值语句是由赋值表达式加上一个分号构成。
7.a=12,n=5,表达式a%=(n%=2)值是0。
8.有一个输入函数scanf("
%d"
k);
则不能使float类型变量k得到正确数值的原因是k前无&
和%d与k的类型不一致。
9.putchar()函数可以向终端输出一个字符。
10.已有定义inti,j;
floatx;
为将-10赋给i,12赋给j,410.34赋给x,则对应以下scanf()函数调用语句的数据输入形式是-12C410.34。
%o%x%e"
i,&
j,&
x);
11.pirntf()函数中用到格式符%5s,其中数字5表示输出的字符串占5列,如果字符串长度大于5,则按实际宽度输出。
12.使用getchar()和putchar()函数必须在源程序中加#include"
stdio.h"
习题四
1.执行下面的程序段后,b的值为(B)。
intx=35;
charz='
b=((x&
15)&
(z<
'
a'
));
A.0B.1C.2D.3
2.设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>
b)&&(n-c>
d)后n的值为(B)。
A.1B.2C.3D.4
3.若k是int型变量,且有下面的程序段,输出结果是(A)。
K=-3;
if(k<
=0)printf("
####"
elseprintf("
"
A.####B.&
C.####&
D.有语法错误,无输出结果
4.设A、B和C都是int型变量,且A=3,B=4,C=5,则下面表达式中值为0的达式是(D)。
A.A&
BB.A<
=B
C.A‖B+C&&BD.!
((A<
B)&&
!
C‖1)
5.阅读程序:
#include"
main()
{floatx,y;
%f"
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;
elsey=10.0;
%f\n"
y);
若运行时从键盘上输入2.0,则上面程序的输出结果是(C)
A.0.000000B.0.250000
C.0.500000D.1.000000
6.阅读程序:
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;
break;
case1:
b++;
case2:
a=%d,b=%d\n"
a,b);
上面程序输出结果是(A)。
A.a=2,b=lB.a=l,b=l
C.a=l,b=0D.a=2,b=2
7.下面程序的输出是(C)。
main()
{inta=–1,b=4,k;
k=(a++<
=0)&
(!
(b--<
=0));
%d%d%d%\n"
k,a,b);
A.003B.012C.103D.112
8.为表示关系x≥y≥z,应使用C语言表达式(A)。
A.(x>
=y)&
(y>
=z)B.(x>
=y)AND(y>
=z)
C.(x>
=y>
=z)D.(x>
9.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为(D)。
A.a<
>
0B.!
aC.a=0D.a
10.若有以下定义:
floatx;
inta,b;
则正确的switch语句是(D)。
A.switch(x)
{case1.0:
*\n"
);
case2.0:
**\n"
B.switch(x)
{case1,2:
*\n"
case3:
**\n"
C.switch(a+B)
{case1:
\n"
case1+2:
D.switch(a+b);
{case1:
11.下列语句中,错误的是(C)。
A.while(a=b)a++;
B.while(0);
C.doD.do
{printf(“ok\n”);
{x++;
}while(x==5)}while(--x==0);
12.执行语句:
for(i=1;
i++<
4;
)后变量i的值为:
(B)。
A.3B.4C.5D.6
13.以下程序的输出结果是:
(D)。
{intx=10,y=10,i;
for(i=0;
x>
8;
y=++i)
%d%d"
x--,y);
A.10192B.9876C.10990D.101091
14.以下for语句的循环次数为:
inti=0,j=0;
for(;
j&
i<
=5;
i++)j++;
A.5次B.1次C.6次D.无限多次
15.以下程序段中内嵌循环共被执行的次数为:
(A)
for(i=5;
i;
i--)
for(j=0;
j<
j++)
{…}
A.20B.24C.25D.30
二、填空题
1.设ch是char型变量,其值为A,且有下面的表达式:
ch=(ch>
ch<
='
Z'
)?
(ch+32):
ch
该表达式的值是A。
2.若已知a=10,b=20,则表达式“!
a<
b”的值为1。
3.已知a=10,b=20,c=30,则表达式
a=25&
b--<
=2&
c++?
***a=%d,b=%d,C=%d\n"
a,b,c):
###a=%d,b=%d,C=%d\n"
a,b,c);
的值为###a=10,b=19,c=30。
4.下面程序的输出结果是0,0,4。
{inta=-1,b=4,k;
k=(++a<
0)&
(b-->
=0);
%d%d%d\n"
5.假定所有变量均已正确说明,下列程序段运行后,x的值是4。
a=b=c=0;
x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
6.若执行下面的程序时,从键盘上输入3和4,则输出结果是3。
{inta,b,s;
%d%d"
a,&
b);
s=a;
if(a&
b)printf("
%d\n"
s);
s--);
7.以下程序的输出结果是x=11,i=11。
{intx=1,i=1;
x<
50;
i++)
{if(x>
=10)
if(x%2!
=1)
{x+=3;
continue;
x-=1;
x=%d,i=%d\n"
x,i);
8.以下程序的输出结果是i=9,j=10。
{inti=10,j=0;
do
{j=j+i;
i--;
}while(i>
j);
i=%d,j=%d\n"
i,j);
9.以下程序的输出结果是35。
{intm=7,n=5,i=1;
{if(i%m==0)
if(i%n==0)
{printf(“%d\n”,i);
i++;
}while(i!
10.以下程序的输出结果是1,-2。
{intx=3;
{printf("
x-=2);
}while(!
(--x));
11.以下程序的输出结果是i=4,j=6。
{inti,j;
for(i=0;
5;
{for(j=1;
10;
if(j==6)
break;
if(i<
3)
continue;
if(i>
习题五
1.下列为一维数组初始化时,正确的是(D).
A.inta[]={1,3,5,7,9,…,15};
B.inta[5]={};
C.inta[5]={5*3};
D.inta[5]={0};
2.下列一维数组说明中,正确的是(A).
A.#defineM10B.intm;
floats[M];
scanf(“%d”,&
m);
floata[m];
C.intm=10,a[m];
D.inta[];
3.若要将2,4,6,8存入数组a中,不正确的是(C).
A.inta[4]={2,4,6,8};
B.inta[]={2,4,6,8};
C.inta[4];
a={2,4,6,8};
D.inta[4];
a[0]=2;
a[1]=4,a[2]=6;
a[3]=8;
4.若有说明:
inta[5][5];
则对数组元素的正确引用是(C).
A.a[3+2][3]B.a[0,3]C.a[4][1+2]D.a[][2]
5.下列二维数组初始化中,错误的是(A).
A.inta[2][]={{3,4},{5}};
B.inta[][3]={2,3,4,5,6,7};
C.inta[3][3]={0};
D.inta[5][4]={{1,2},{2,3},{3,4},{4,5}};
6.若有以下数组定义:
charch[]="
book_120\n"
则数组ch的存储长度是(D)。
A.7B.8C.9D.10
7.以下程序段的输出结果是(A).
charstr[8]={'
'
b'
c'
d'
\0'
y'
z'
};
%s"
str);
A.abcdB.abcdyzC.abcdyzD.出错
8.设有如下定义:
chars1[20]="
tianjin"
s2[10]="
beijing"
执行语句:
strcpy(s1+4,s2);
printf("
s1);
后,输出结果是(B).
A.tianB.tianbeijingC.tianjinbeijingD.tianbeij
9.合法的数组定义是(B)
A.inta[]={"
string"
B.inta[]={0,1,2,3,4,5};
C.chara={"
D.chara[]={0,1,2,3,4,5};
10.若有以下说明,则数值为4的表达式是(D)
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='
d,g;
A.a[g-c]B.a[4]C.a['
-'
]D.a['
-c]
11.下列语句中,正确的是(D)
A.chara[3][]={'
'
I'
B.chara[][3]={'
C.chara[3][]={'
"
I"
D.chara[][3]={"
abc"
12.设有如下定义,则正确的叙述为(C)
charx[]={"
abcdefg"
chary[]={'
e'
f'
g'
A.数组x和数组y等价B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度
1.设有定义语句“inta[3][4]={{1},{2},{3}}”,则a[1][1]值为0,a[2][1]的值为0。
2.执行“intb[5]={},a[][3]={1,2,3,4,5,6}”后,b[4]=0,a[1][2]=6。
3.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{intk,p;
ints[]={1,-9,7,2,-10,3};
for(p=0,k=p;
p<
6;
p++)k=p;
if(s[p]>
s[k])
4.下面程序的功能是将一个字符串str的