C语言习题Word下载.docx
- 文档编号:20055419
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:48
- 大小:40.99KB
C语言习题Word下载.docx
《C语言习题Word下载.docx》由会员分享,可在线阅读,更多相关《C语言习题Word下载.docx(48页珍藏版)》请在冰豆网上搜索。
【答案】B
【例6】
(2003年9月)以下叙述中正确的是( )。
A. C程序中注释部分可以出现在程序的任意合适地方。
B. 花括号“{”和“}”只能作为函数体的定界符。
C. 构成C程序的基本单位是函数,所有函数名都可以由用户命名。
D. 分号是C语言之间的分隔符,不是语句的一部分。
【答案】A
【例7】
(2003年9月)若已定义的函数有返回值,则以下关于该函数调用叙述错误的是( )。
A. 函数调用可以作为独立的语句存在。
B. 函数调用可以作为一个函数的实参。
C. 函数调用可以出现在表达中。
D. 函数调用可以作为一个函数的形参。
【答案】D
在C语言中,当函数有返回值时可以作为表达式或表达式的一部分,而函数调用只能作为实参,不能作为形参。
第3章数据类型、运算符、表达式与基本语句
3.1数据类型
(2000年4月)下列变量定义中合法的是( )。
A. short_a=1-.le-1B. doubleb=1+5e2.5
C. longdo=0xfdaLD. float2_and=1-e-3
(2001年4月)以下只有在使用时才为该类型变量分配内存的存储类说明是( )。
A. auto和staticB. auto和register
C. register和staticD. extern和register
根据C语言的规定,auto和register在C语言程序中当它们被用到时才会分配内存,在它们声明时并不占用内存空间的。
(2002年4月)以下选项中不属于C语言类型的是( )。
A. signedshortintB. unsignedlongint
C. unsignedintD. longshort
(2002年9月)以下选项中合法的实型常数是( )。
A. 5E2.0B. E-3C. 2E0D. 1.3E
(2002年9月)已知大写字母A的ASCII码的值是65,小写字母a的ASCII码是97,则用八进制表示字符常量‘\101’是( )。
A. 字符AB. 字符aC. 字符eD. 非法的常量
本题中101的八进制在十进制表示则是65,也就是A的ASCII码值。
(2002年9月)C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( )。
A. voidB. intC. floatD. double
(2003年9月)以下选项中可作为C语言合法整数的是( )。
A. 10110BB. 0386C. 0XffaD. x2a2
【例8】
(2003年9月)已定义c为字符变量,则下列语句中正确的是( )。
A. c=‘97’B. c=“97”C. c=97D. c=“a”
【例9】
(2004年4月)以下符合C语言语法的实型常量是( )。
A. 1.2E0.5B. 3.14159EC. 5E-3D. E15
【例10】
(2002年4月)设有以下变量定义,并已赋确定的值
charw;
intx;
floaty;
doublez;
则表达式:
w*x+z-y所求得的数据类型为 。
【答案】double
【考点解析】当不同数据类型一起运算时,如果有精度大的数据类型参加时,结果会上最后会以精度大的,这样能保持数据的精度。
3.2运算符
(2000年4月)设有intx=11;
则表达式(x++*1/3)的值是( )。
A. 3B. 4C. 11 D. 12
【答案】A
【考点解析】在题目中,有三个运算符,其中“/”可以把1/3看成一个整体,也就是一个数,那么根据运算符优先级知道,++的优先级比*高,那么先运行++,再运行*,最后结果是3。
(2000年4月)设intx=1,y=1;
表达式(!
x||y--)的值是( )。
A. 0B. 1C. 2D. -1
【考点解析】在这一题中,我们要注意的是--或++的位置,在这里y--是指先把y与!
x进行或运算,后y再减1,那么这个表达式的值是1。
如果--y是指y减1后再与!
x进行或运算。
(2000年4月)设intb=2;
表达式(b>
>
2)/(b>
1)的值是( )。
A. 0B. 2C. 4D. 8
【考点解析】移位运算是用于一个整数的二进制数向左或向右移动。
先是把b化成二进制,再右移两位,则是0;
而右移一位,则是1,所以整个表达式的结果是0。
(2000年9月)C语言中运算对象必须是整型的运算符是( )。
A. %=B. /C. =D. <
=
【考点解析】在C语言程序设计中“%”是表示求余运算,是必须是整形的数据类型,而其它三种运算符的运算对象可以是整形也可以是其它数据类型。
(2000年9月)若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是( )。
A. 1B. 2C. 2.0D. 2.5
【考点解析】在这一题中,我们清楚C语言中的自动数据类型的转换,在这里3/2是整形除以整形,所以结果自动转换成整形,再加上1,所以最后结果是2。
(2001年9月)整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是( )。
A. x||yB. x|yC. x&
yD. x^y
【考点解析】||是C语言的逻辑或运算符,表示只要有一个表达式为真,则整个表达式都为真;
|是按位或运算符,先是把操作数转化成二进制,再按位进行或运算;
&
是按位与运算符,先是把操作数转化成二进制,再按位进行与运算;
^是按位异或运算符,先是把操作数转化成二进制,再按位异或运算,就是相同的为0,不同的为1。
(2002年9月)已有定义:
intx=3,y=4,z=5;
,则表达式!
(x+y)+z-1&
y+z/2的值是( )。
A. 6B. 0C. 2D. 1
【答案】D
【考点解析】在本题中,优先级最高的是括号,因此先计算x+y,跟着是!
的优先级高,即运算!
(x+y),接着是/的优先级高,即运算z/2,再是+、-的运算符优先级,在本表达式中优先级最低的是&
,最后的结果是1。
(2002年9月)设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是( )。
A. 6.500000B. 6C. 5.500000D. 6.000000
【考点解析】在本题表达式中,优先级最高的是int,跟着是/,最后是+。
根据优先级分析,先运算(int)5.5,是指对5.5取整,这里也是数据类型的强转换。
跟着运算b/b,因为b是double类型,则结果也是double类型,最后运算“+”运算符,则可以计算出最后的结果。
(2003年4月)下列关于单目运算符++、--的叙述中正确的是( )。
A. 它们的运算对象可以是任何变量和常量。
B. 它们的运算对象可以是char型变量和int型变量,但不能是float型变量。
C. 它们的运算对象可以是int型变量,但不能是double型变量和float型变量。
D. 它们的运算对象可以是char型变量、int型变量和float型变量。
【考点解析】在C语言中,++、--是单目运算符,分别表示进行加1、减1运算,一般是在char、int、float数据类型中运算。
(2004年9月)有以下定义语句
doublea,b;
intw;
longc;
若各变量已正确赋值,则下列选项中正确的表达式是( )。
A.a=a+b=b++B.w%((int)a+b)
C.(c+w)%(int)aD.w=a==b
【考点解析】在C语言程序设计中,表达式不允许作为值来直接赋值给表达式;
在表达式中运用“%”时应该注意,运算符“%”的使用对象必须是整型;
“==”是关系运算符,在这里并不正确,赋值符应该是“=”。
【例11】
(2004年9月)若x和y代表整型数,以下表达式中不能正确表示数学关系
|x-y|<
10的是( )。
A.abs(x-y)<
10B.x-y>
-10&
x-y<
10
C.!
(x-y)<
-10||!
(y-x)>
10D.(x-y)*(x-y)<
100
【例12】
(2004年9月)设有定义语句:
char c1=92,c2=92;
则以下表达式中值为零的是( )。
A.c1^c2B.c1&
c2C.c1~c2D.c1|c2
3.3表达式
(2000年9月)若变量已正确定义并赋值,下面符合C语言语法的表达式是( )。
A. a:
=b+1B. a=b=c+2
C. int18.5%3D. a=a+7=c+b
【考点解析】表达式是由运算符把字符连接起来所构成的。
在上面选项中,A中的字符变量定义错误,C选项不是表达式,D选项中等号左边必须是一个可以确定的值。
(2001年4月)若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是( )。
A. -3B. 9
C. -12D. 6
【考点解析】这题中,有多个赋值关系。
从右到左计算,可以这样理解:
首先a*a等于9,再计算a=a-9,得到a=-6,再计算a=a+(-6),所以最后答案是-12。
(2002年4月)变量a已被定义为整型,下列表达式不正确的是()。
A.a='
A'
+20B.a-='
a'
C.a=c+dD.a='
c'
+'
d'
【考点解析】在C语言中我们得知字符变量可以参与任何整数的运算,在C项中,c和d如果是字符变量应刻有单引号括住,如果是其它变量应提前定义,以避免编绎出错。
(2002年4月)若有定义:
inta=8,b=5,c;
执行语句c=a/b+0.4后,c的值为( )。
A.1.4B.1C.2.0D.2
【考点解析】在本题中,首先计算的是优先级高的/,a/b(8/5=1),再将1+0.4的值赋给c,由于c为整型变量所以要将1.4转换为整型,即是舍弃小数位0.4(c的值变为1)。
(2002年9月)与数学式子对应的C语言表达式是( )。
A.3*x^n(2*x-1)B.3*x**n(2*x-1)
C.3*pow(x,n)*(1/(2*x-1))D.3*pow(n,x)/(2*x-1)
【考点解析】在C语言程序设计中,数学运算次方在C语言中运用函数pow()来表达,例如:
x的y次方,在C语言中应该这样表达:
pow(x,y),所在选项中,选项D表达写反了,则只有选项C才是正确的选项。
(2002年9月)以下选项中,与k=n++完全等价的表达式是( )。
A. k=n,n=n+1B. n=n+1,k=n
C. k=++nD. k+=n+1
【答案】A
【考点解析】在本题中,k=n++为后辍运算,根据其运算规则,应先把n的值赋给k,然后n的值再加上1,选项A的表达式与本题中的表达式等价。
(2003年9月)以下选项中非法的表达式是( )。
A.0<
=x<
100B.i=j==0
C.(char)(65+3)D.x+1=x+1
【考点解析】在C语言程序设计中,表达式不允许作为值来直接赋值给表达式。
(2004年4月)设有定义:
floata=2,b=4,h=3;
以下C语言表达式中与代数式1/2*(a+b)h计算结果不相符的是( )。
A.(a+b)*h/2B.(1/2)*(a+b)*h
C.(a+b)*h*1/2D.h/2*(a+b)
【考点解析】本题实质上是要把数学表达式在C语言程序设计中表达出来,在C语言中优先级最高是括号,那么先计算所有的括号,可以看到选项B中的(1/2)结果是0,那么整个表达式的结果就是0,而其它三项的结果并不是0。
第4章 程序设计三种基本结构
一、选择题:
(2002年4月)下面的程序的输出结果是( )。
#include<
stdio.h>
main()
{
inti=010,j=10;
printf("
%d,%d"
++i,j--);
}
A.11,10B.9,10
C.010,9D.10,9
【答案】B(i的值是以八进制定义的)
(2002年4月)以下的程序的输出结果是( )。
inta=5,b=4,c=6,d;
printf(("
d\n"
d=a>
b?
)(a>
c?
a:
c):
(b));
A.5B.4
C.6D.不确定
(2002年4月)以下程序的输出结果是( )。
inta=4,b=5,c=0,d;
d=!
a&
!
b||!
c;
%d\n"
d);
A.1B.0
C.非0的数D.-1
charx=040;
%o\n"
x<
<
1);
A.100B.80
C.64D.32
(2002年9月)已知i,j,k为int型变量,若从键盘输入:
1,2,3<
回车>
,使i的值为1、j的值为2,k的值为3,以下选项中正确的输入语句是()。
A.scanf("
%2d%2d%2d"
&
I,&
j,&
k);
B.scanf("
%d%d%d"
C.scanf("
%d,%d,%d"
D.scanf("
i=%d,j=%d,k=%d"
(2002年9月)若有以下程序
intk=2,i=2,m;
m=(k+=i*=k);
printf(“%d,%d\n”,m,i);
执行后的结果是( )。
A.8,6B.8,3
C.6,4D.7,4
【考点解析】根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,复合运算表达式是右结合性,先从右边开始计算i*=k得i=i*k=2*2=4,k+=i得k=k+i=2+4=6,所以m的值为6。
输出结果为m=6,i=4。
(2003年4月)若有以下程序段(n所赋的是八进制数)
intm=32767,n=032767;
printf(“%d,%o\n”,m,n);
执行后输出结果是( )。
A.32767,32767B.32767,032767
C.32767,77777D.32767,77777
(2003年4月)有以下程序段
intm=0,n=0,charc='
;
scanf("
%d%c%d"
m,&
c,&
n);
prinft("
%d,%c,%d\n"
m,c,n);
若从键盘上输入:
10A10<
,则输出结果是( )。
A.10,A,10B.10,a,10C.10,a,0D.10,A,0
(2003年4月)有以下程序
inti=10,j=1;
%d,%d\n"
i--,++j);
执行输出的结果是( )。
A.9,2B.10,2
C. 9,1D.10,1
(2003年9月)有以下程序
main()
inta;
charc=10;
floatf=100.0;
doublex;
a=f/=c*=(x=6.5);
%d%d%3.1f%3.1f\n"
a,c,f,x);
程序运行后的输出结果是( )。
A.16516.5B.1651.56.5
C.1651.06.5D.2651.56.5
inta=1,b=2,m=0,n=0,k;
k=(n=b>
a)||(m=a<
b);
%d,%d\n"
k,m);
A.0,0B.0,1
C.1,0D.1,1
(2003年9月)有定义语句:
intx,y;
若要通过scanf("
x,&
y);
语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是"
A.1112<
B.11,12<
C.11,12<
D.11,<
12<
【例13】
(2003年9月)设有以下程序段:
intx=2002,y=2003;
printf(“%d\n”,(x,y));
则以下叙述中正确的是"
A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出。
B.运行时产生出错信息。
C.输出值为2002。
D.输出值为2003。
【例14】
main()
intx=3,y=2,z=1;
x/y&
~z);
A.3B.2C.1D.0
【例15】
(2004年4月)有以下程序
intx=102,y=012;
%2d,%2d\n"
x,y);
A.10,01B.02,12
C.102,10D.02,10
【例16】
{
unsignedchara,b;
a=4|3;
b=4&
3;
%d%d\n"
a,b);
执行后输出结果是()。
A.70B.07
C.11D.430
【例17】
(2004年9月)有以下程序
chara,b,c,d;
scanf("
%c,%c,%d,%d"
a,&
b,&
d);
%c,%c,%c,%c\n"
a,b,c,d);
若运行时从键盘上输入:
6,5,65,66<
。
则输出结果是( )。
A.6,5,A,BB.6,5,65,66
C.6,5,6,5D.6,5,6,6
【考点解析】在C语言程序设计中,scanf函数的格式控制参数中“%d”表示输入整数,“%c”表示输入字符,也就是说,前两个输入的数是以字符形式输入的,后两个输入的数是以整数形式输入的,输出时,全部都以字符形式输出,而刚才的后两个整数应该用ASCII码转化为字符。
则输出的是6,5,A,B。
【例18】
intm=3,n=4,x;
x=-m++;
x=x+8/++n;
printf(“%d\n”,x);
A.3B.5
C.-1D. -2
【考点解析】在本题中,根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,表达式x=-m++可以转换成x=-(m++),可得x的值为-3,而表达式x=x+8/++n可以转换成x=x+8/(++n),代入x的值得x=-3+8/5=-2,所以最后的输出结果是-2。
【例19】
chara=’a’,b;
printf(“%c”,++a);
printf(“%c\n”,b=a++);
程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题