二级C语言笔试习题集答案及解析.docx
- 文档编号:8344647
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:57
- 大小:85.55KB
二级C语言笔试习题集答案及解析.docx
《二级C语言笔试习题集答案及解析.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试习题集答案及解析.docx(57页珍藏版)》请在冰豆网上搜索。
二级C语言笔试习题集答案及解析
第一章C语言基础知识
一,选择题
1答案是A
A正确
B{}可以作为复合语句的标志
Cmain函数不是用户命名的
D分号是语句结束的标志,肯定是语句的一部分
做这个题目需要对书上的概念透彻的理解
2答案是A
A错误用户标识符:
命名时,标识符的选择由用户自定,但是不能与关键字相同,所以A选项错误。
这个题目考察用户标识符
3答案是B
用户标识符是标识符,所以可以是有下划线,但是中划线不属于字母,
数字,下划线其中一种。
这个题目考察用户标识符的概念。
4答案是B
define是预定义标识符,而预定义标识符可以是用户标识符,所以
define可以是用户标识,if是关键字,而关键字不能是用户标识符,
所以if不可以是用户标识符
5答案是D
long是关键字,参照附录二
注:
6--13考察用户标识符概念
6答案是D
D答案以数字2开头了,不符合标识符定义
7答案是C
C答案以数字开头了
8答案是D
int是关键字
9答案是B
答案A是关键字,答案C是以数字开头了,不符合概念,答案D出
现了小数点
10答案是A
答案A出现了小数点
11答案是C
答案C以数字开头了
12答案是A
B答案中float是关键字,C答案中3c以数字3开头了,D答案中-5d
中-不属于字母,数字,下划线中一种
13答案是A
B答案中-max中-错误,C答案中3COM以字母3开头了,D答案中
int是关键字,不是用户标识符
14答案是B
A答案中15.后面不应该有点,C答案中出现了逗号,D中字母B有
问题
15答案是D
VisualC++6.0中int类型的变量占的字节数为4。
16答案是B
B中出现了8,而八进制只能有0到7组成
17答案是D
答案D中开头是0不是o
18答案是C
答案A中E后面是整数,0.5是小数
答案B中E后面不能为空
答案D中E前面不能为空
本题目考察指数的表示形式
19答案是C
答案A中2.0有问题,不能为小数形式
答案B中E前面不能为空
答案D中E后面不能为空
本题目考察指数的表示形式
20答案是A
B中八进制中不能出现数字8,C中e后面不能是小数,D中e后面
不能为空
21答案是B
B中0.4是小数,不正确
22答案是C
C中0.5是小数,不正确
23答案是D
3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8
本题目考察算术运算符,需要注意整数除以整数结果只能是整数
24答案是D
%不能用于实型的计算
25答案是D
D答案中$不属于字母,数字,下划线
26答案是A
A答案是逗号表达式,B答案中x+1=y是赋值表达式,左边只能是变
量,而这里是x+1,同理答案C中x+10也是错误的,在D答案中,
考察的是强制类型转换,
正确的是(double)x/10
27答案是A
本题考察的是注释需要注意的地方,具体解答见课本第2页中间部分
28答案是B
答案A中n2没有定义,答案C中在定义f之前不能使用它,答案D
中E后面必须是整数
29答案是C
考察的是强制类型转换,正确的是k%(int)f
30答案是D
本题目类似与第七课时的例一,解题方法是要抓住++m,--n,--m,
表达式的值是变量变化之后的值,而n--表达式的值是变量n变化之
前的值
31答案是B
本题目考察的是负
整数与无符号正整数在计算机中存放的格式的一样的,但表示的不
同的两个数
32答案是C
A答案中%运算对象不能为实型,26.8错误,B答案中考察的赋值
运算符,赋值运算符左边必须是变量,所以赋值运算符左边1+2错
误,同理答案D错误
33答案是C
本题目考察的是课本第15页的关于自加与自减运算符的第一点说
明,即增量运算符的运算对象只能是变量,而在C答案中++(i+1)
中,i+1是表达式
34答案是B
本题目考察的是整数除以整数结果是整数,在B答案中1/2结果是0,导致整个表达式的值是0,明显是错误的
35答案是D
对于++、--单目运算符来说,其运算对象可以是char型、int型和float型变量
36答案是A
本题目主要考察n++表达式的值是n变化之前的值,然后使n的值增加1
37答案是B
c=a/b+0.4c=8/5+0.4c=1+0.4c=1.4因为c是int型的,所以c的值是1,做此题目需要仔细阅读题目
38答案是D
(int)a+b/b=(int)5.5+2.5/2.5=5+1.000000=b=6.000000
同样a,b的类型是double型的
39答案是D
long和short不能相互修饰
40答案是C
标识符中不能有$
41答案是C
A选项中,在变量赋值时不能赋给表达式,而y*5是表达式;选项B中进行强制类型转换时,类型标识符要加上括号,所以错误;选项D中,%(求余运算符)运算对象只能是整形数。
42答案是A
选项A中,b变量还没有定义
43答案是C
选项A中long是关键字;选项B中“-”符号不属于字母、数字或下划线;选项D中,int是关键字。
44答案是B
选项A中,八进制数只能由0—7之间的数字组成;选项C,十六进制数应该以0X开头,并且由0—9以及a—f组成,Oabc不正确;选项D中10,000包含逗号,不正确。
45答案是B
C语言的标识符中只能包含字线、数字和下划线,没有连接符。
46答案是C
既然在内存中,字符数据以ASCII码存储,它的存储形式就与整数的存储形式类似。
这样使字符型数据和整型数据之间可以通用。
一个字符数据既可以以字符形式输出,也可以以整数形式输出。
以字符形式输出时,需要先将存储单元中的ASCII码转换成相应字符,然后输出。
以整数形式输出时,直接将ASCII码作为整数输出。
也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算。
47答案是D
不同的计算机系统或者编译系统,对3种整数类型所占用的字节数有不同的规定。
48答案是A
选项B中求余运算(%)的运算对象必须是整型;选项C中,赋值运算符(=)的左边必须是变量,不能是常量或表达式;选项D与选项C同理。
49答案是A
++运算符有前缀和后缀两种形式,本题中的选项C就是前缀形式,其表达式的值为增1后的值,而选项A为后缀形式,其表达式的值为增1之前的值。
而选项B和D的表达式都是k加1之后的值
50答案是A
51答案是C
选项A中将一个变量j的值赋给了一个表达式,这种写法是错误的,只能给变量赋值,而不能给常量和表达式赋值;选项B中强制类型转换的格式使用出错,强制类型转换时,类型标识符必须用括号括起来;选项D中,求余运算符(%)的两端必须是整形数。
52答案是D
字符常量是用单引号括起来的单个字符,所以选项B错误;此外还有一种特殊的字符专为控制设计,称为转义字符,有三种转义字符:
一种是由一个“\”开头加一个普通字符组成,代表一个字符。
如’\’’表示一个单引号字符,所以选项D正确;’\\’表示一个斜杠字符,而选项C中的’\’则是错误的;用“\”与其后的1~3位八进制数字构成的字符序列,表示ASCII码等值于该八进制数的字符;用“\x”与其后的1~2位十六进制数字构成的字符序列,表示ASCII码等值于该十六进制数的字符;所以选项A错误。
53答案是B
字符常量是用单引号括起来的单个字符,所以选项A正确;此外还有一种特殊的字符专为控制设计,称为转义字符,有三种转义字符:
一种是由一个“\”开头加一个普通字符组成,代表一个字符。
如’\n’表示一个换行符,所以选项D正确;用“\”与其后的1~3位八进制数字构成的字符序列,表示ASCII码等值于该八进制数的字符,所以选项B错误,因为9不是八进制数字;用“\x”与其后的1~2位十六进制数字构成的字符序列,表示ASCII码等值于该十六进制数的字符;所以选项C正确。
54答案是D
大写字母的ASCII码值比小写字母的ASCII码值小32
55答案是A
选项A中的字符变量ch只能接收单个字符,‘ab’不是单个字符,所以错误。
56答案是B
charx=’C’将一个大写字母赋给了字符型变量x;然后通过x=x+32将x中字符的ASCII码值加32,即为小写字符’c’的ASCII码值;然后将x以字符形式输出,即为小写字母c。
57答案是A
语句charx,y;定义两个字符型变量x,y;然后通过x=’B’-‘A’+’a’将用大写字母B的ASCII码送去大写字母A的ASCII码,结果便为1,然后再加上小写字每a的ASCII码,结果就为小写字母b的ASCII码,然后再赋值给变量x;通过y=x+2,将变量x中的ASCII码值加2,即变成小写字母d的ASCII码值再赋值给变量y;然后以数值形式输出变量x中的ASCII码值为98,再以字符形式输出变量y中的字符为d。
58答案是B
选项A中字符’0’的ASCII码值为48,所以A的结果不为1;选项B中’\0’代表空值,空值NULL的ASCII码值为0所以结果为1;选项C中字符’1’的ASCII码值为49,所以结果不为1;选项D相当于用0-48结果也不为1。
59答案是D
如果要表示十六进制字符,则要用’\x’开头,所以选项A错误;如果要表示八进制,则’\0’开头,后面跟1~3位的八进制数,八进制数由0~7组成,不包含8,所以选项B错误;用单引号括起来的单个字符才是字符常量,所以C错误;而’\n’是转义字符,用来表示回车符。
60答案是B
用单引号括起来的单个字符,称为字符常量,所以选项B错误。
61答案是C
先将c1变量中的字符的ASCII码值输出,即为65,将变量c2中字符的ASCII码值减2后输出,即为66。
62答案是A
我们知道异或运算,只有两个操作数不同,结果才为1。
所以0^1=1,1^1=0,由此可推理,任何数与1进行异或运算都得它的相反数;变量b中的高4位为1,所以要让变量a的高4位取反,即可让变量a和变量b进行异或运算。
63答案是A
变量c1和c2中的值相同,所以转换成二进制数后,对应的二进制位上的值也相同,当两值相同时,只有进行异或运算,结果才为0,所以c1^c2值为0。
所以本题的正确答案为A。
64答案是A
4|3转换成对应的二进制数即100|011=111再转换为十进制数即为7;而4&3转换成对应的二进制数即100&011=000,再转换为十进制数即为0;所以选择A。
65答案是D
x/y的值为1,z的值也为1,1和1求反进行与运算,结果一定为0。
所以本题选择D。
66答案是D
2+x=00000010+10100111=10101001;~3=~00000011=11111100;所以就相当于10101001^11111100=01010101,所以选择D。
67答案是D
a=0x3转换为二进制数即为00000011;b=a|0x8转换为二进制数即为00000011|00001000=00001011即b=11,b<<1即00001011<<1=00010110即c=22,所以本题选择D。
二,填空题
1位01
2关键字预定义标识符用户标识符
38
4八十十六
5intfloatdouble
65+3.6/2=5+1.8=6.8
71516a++表达式的值是a变化之前的值,当然a本身增加了1
8把10赋给变量B
9123.460000(int)(x*100+0.5)/100.0=(int)(12345.67+0.5)/100.0=(int)(12346.17)/100.0=12346/100.0=123.460000。
103
整个表达式是一个逗号表达式,变量n和i赋值为2后,通过++i将i的值增加1变为3,然后再通过i++为i增加1,整个逗号表达式的值为i++的值,此时是后缀,所以整个i++表达式的值为3,而变量i的值为2。
1111110111
第11题没有详细解析而且答案出错:
~x^y<<1=~00000010^00000101<<1=11111101^00001010=11110111
122
只有’\\’和’\b’是正确的
13220.000000
x=f*=n/=(c=50)是一个赋值表达式,它的顺序是从右向左赋值,先执行c=50,然后执行n/=50即n=n/50=100/50=2,接着执行f*=2即f=f*2=10*2=20.000000,最后再将值赋给变量x。
输出变量n和x的值,即为220.000000。
14a=14
表达式a=(3*5,a+4)的括号中是一个逗号表达式,其结果是最后一个表达式的值,即将a+4=14的值赋给变量a。
所以输出结果为a=14。
第二章顺序结构
一选择题
1,答案是C
随意使用空语句会导致逻辑上出现错误,不要随便使用。
2,答案是B
语句必须以分号结尾,A,C,D表达式后面均没有分号。
3,答案是C
intx=13,y=4;说明x,y均为整型,所以x/y只取整数部分(舍去法),值为3,把3赋值给x,整个x=x/y表达式的值为左边变量x的值,所以输出为3。
4,答案是A
a,b均为整型,a/b是取a÷b所得商的整数部分,所以是0,再把0赋值给c,所以是c的值是0。
5,答案是D
A注释语句可以放在代码的任何位置
B将r定义为整型不会在编译时出错,会自动进行类型转换
C变量s为浮点型,格式描述符%f时正确的
Dπ是非法的变量
6,答案是D
(x,y)是逗号表达式,它的值只有一个,所以格式说明符的个数和输出项的个数是相等的。
并且逗号表达式的值为最后一个表达式的值,最后一个表达式是y=2003,所以整个表达式的值是2003,因此输出值为2003。
7,答案是A
m是十进制整数以十进制有符号的形式输出,即照原样输32767,n=032767,032767是八进制的整数以八进制无符号形式输出,去掉前面的0。
见教材P34
8,答案是C
m,n的值都是十六进制数0xabc,m-=n即是m=m-n,把m-n的值赋给m,
即把0赋给m,再把m值以十六进制无符号的形式输出,输出的十六进制
数不用在前面0x或者0X。
见教材P35
9,答案是B
表达式i--的值是在变量自减之前的值,i的初值为10,所以该表达式的值也为10;表达式j++的值是变量自加之后的值,j初值为1,所以该表达
式在值是2。
10,答案是C
m=0256,即m是八进制的数0256,要以八进制无符号的形式输出,即输出
256;n=256,即n是十进制的数256,也要以八进制无符号的形式输出,首
先要把十进制数转化为八进制数,256转化为八进制为0400,以无符号形
式输出,即输出400。
11,答案是B
在printf语句中,格式控制的个数只有一个,即%d,而输出项有两项,即a和b。
而得到的结果应该只有一个,所以应该输出第一个变量的值,即变量a的值。
12,答案是C
第一个数据的输出控制宽度是2位,但是x的值是102,占3位,要输出的数据宽度大于规定的输出宽度,所以按数据的实际宽度输出,输出102。
第二个数据要求以十进制形式输出,输出控制宽度是2,y的值为012,是八进制数,所以要转换成十进制数10后再输出。
13,答案是B
表达式a=f/=c*=(x=6.5),按从右到左结合,先把6.5赋值给x,再执行c=c*6.5,c的值变为65,再执行f=f/65,为浮点数的除法,f的值为1.53……,再把f的值赋给a,a为整型数据,执行强制类型转换,a的值为1。
a对应的输出格式为%d,即输出1;c对应的输出格式为%d,输出65,f对应的输出格式%3.1f,即输出控制宽度为3位,保留小数点后一位小数,即输出1.5,x对应的输出格式也为%3.1f,输出6.5。
14,答案是D
floatx=-123.456;说明x为单精度浮点数据,单精度浮点数据对应的输出格式应该为%f。
15,答案是C
m=(k+=i*=k);按从右到左结合,先执行i=i*k;即i被赋值为4,再执行k=k+4;k被赋值为6,最后把6赋给m,输出m和i的值。
16,答案是C
略(参考12题)
17,答案是D
-m++遵循从右向左结合的原则;m++的值为m自增之前的值,所以执行完x=-m++以后,x被赋值为-3;表达式x=x+8/++n中有加号除号,先算8/++n,++n的值为自增之后的值为5,8/5取整为1,即x=x+8/++n转化为x=x+1,即把x+1的值赋给x,x的值变为-2。
18,答案是D
A输入函数应为scanf();
B,C输入数据列表必须是地址表达式;
19,答案是A
从键盘输入数据的格式必须与输入控制要求的格式一样
B答案三个之间不要有空格;C答案用逗号分开是多余的;D答案格式不匹配。
20,答案是A
格式控制要求输入的两个数据之间要用逗号隔开,A没有逗号所以错误,D两个输入数之间的回车换行可以忽略。
21,答案是C
x乘以100是为了把x小数点后的两位小数变为整数,再加上0.5,如果小数点后一位大于等于5则会进一位,如果小数点后一位小于5则不会出现进位的情况,再对其进行强制类型转换,采用舍去法丢掉小数部分,即对x乘上100后的数实现了小数位到整数位的四舍五入。
最后再除以100.0,把数字变回原来的大小,整数与浮点数相除结果为浮点数,即实现了要求。
22,答案是C
从键盘输入数据的格式必须与输入控制要求的格式一样。
23,答案是B
输入控制中第一个数要求以“%2d”形式输入,即要求输入一个两位的数,而从键盘输入的数为876,所以从左到右取两位数字87,即把87赋值给整型变量a,余下的6再赋值给浮点型变量b,自动进行类型转换,b的值为6.000000,后面输入的543则没有赋值给变量。
24,答案是D
“%%”会输出一个“%”,“d”会照原样输出,因为没有格式说明,m,n无法输出到屏幕。
25,答案是D
第1个输出语句要求ch以%c(字符)形式输出所以为输出“a”,以%d(整数)形式输出为,字符转换为整型要使用ASCII码所以为“97”,k没有对应的输出符所以没有输出,第2个输出语句要求以整型方式输出k得到“12”。
结果为“a,97,k=12”
26,答案是B
a+b的结果为30,按照“a+b=%d\n”的输出格式得到输出结果“a+b=30”B
27,答案是B
printf可以没有输出项,没有输出项的printf只是没有输出内容;整数不能以十二进制输出,getchar()只能读入字符。
28,答案是A
getchar()可以读入空格符合回车符。
二填空题
1,一条语句分号
2,88
首先将八进制数0210转化为十六进制的数0X88,输出格式说明要以十六进制无符号的形式输出,所以省略0X,直接输出88。
3,11
把十进制数转化为八进制数,以无符号的形式输出
4,252137
b为八进制数025,c为十六进制数0X25,首先把b、c都转化为十进制的整数,分别为21、37,按照输出格式要求a、b、c以十进制整数形式输出,中间以空格分开,所以输出为252137。
5,n1=%d\nn2=%d
除了n1,n2的值之外,还必须加入“n1=”“n2=”照原样输出的字符,很明显在两个数据之间还加了换行符。
6,i=10,j=20<回车>
格式控制中加入了格式说明以外的其他字符,则在输入数据时这些字符也要同样输入。
输入格式控制为i=%d,j=%d,所以则应该从键盘输入i=10,j=20
7,261
a为十进制数177转化为八进制的数为0261,以无符号的形式输出为261
8,16
a的初值为0,在表达式a+=(a=8)中,a首先被赋值为8,再执行操作a=a+a,所以a最后被赋值为16,即输出a的值为16
9,printf(“a=%d,b=%d”,a,b);
10,B66
B在ASCII码中派在A的后面A为65,那么B为66。
11,10
012为八进制数,转换为十进制为10。
12,1234
在scanf函数中指定了宽度为2,输入123456,a=12,b=34,后面的567无效。
13,12
程序运行时输入12,getchar()函数只能接受单个字符,所以ch1=’1’,ch2=’2’。
n1=ch1-‘0,转化为ASCII码计算n1=50-49,n1的值为1。
n2=n1*10+(ch2-‘0’)转化为ASCII码计算n2=1*10+(51-49),n2的值为12。
第三章选择结构
一、选择题
1、D此题主要是考语句的特征。
一条语句只包含一个分号,D项有两个分号,应该是两条语句,所以选D。
2、C此题主要是考真假条件的等价。
题目中的E为非0时条件为真,为0时为假。
那么把非0和0带到选项中可知,C项正好是E为0时表达式为真,非0时为假,所以选C。
3、D任意合法的表达式都可以作为逻辑运算符的运算对象
4、D此题主要是考逻辑运算和关系运算的优先级别.只要掌握!
、算术运算和&&的优先级别便可选对.这几种运算符的具体优先级关系见见教材P188,附录三。
5、A此题主要是考逻辑运算符!
、&&和||之间的优先级别。
!
最高,&&次之,||最低。
先求得!
a为0,所以不必计算!
b的值,即!
a&&!
b的值为0,由c=0,!
c=1,而0||1=1,所以选A。
6、A此题主要是考了逻辑、关系和算术运算,熟练掌握逻辑运算、关系运算和算术运算的优先级别后,就不难了。
A选项中!
a为0,所以!
a==1为假,那么就不用计算&&后面的表达式了,因为0与任何数均为假;B项中先计算出a
c也为假,而0||1=1;C项中a和b均为真,所以a&&b的值为1;D项中先计算出(b+b)&&(c-a)=1,又a=2,2||1=1所以选A。
7、D此题考到了++运算符以及逻辑运算。
当计算机碰到a&&b时,先计算表达式a的值,若为真才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=0,则0&&b必为0;而a||b则正好是相反的,即先计算表达式a的值,若a为假才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=1,则1||b的值必为1,理解了这两点后,我们在看题目:
i++==1的值为1,此时i为2,所以计算&&后的表达式,首先计算++j==3的值为1,j的值为3,由上面的原理我们可知,||后面的表达式不用再计算,所以此时i,j,k的值分别为2,3,3。
8、D此题和题2非常的相似,也是考真假条件的转换,其中D项中只有k为0时,!
k%2==1才成立,显然和A、B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 笔试 习题集 答案 解析