计算机二级笔试宝典习题答案与详解.docx

上传人:b****7 文档编号:9928061 上传时间:2023-02-07 格式:DOCX 页数:78 大小:62.63KB
下载 相关 举报
计算机二级笔试宝典习题答案与详解.docx_第1页
第1页 / 共78页
计算机二级笔试宝典习题答案与详解.docx_第2页
第2页 / 共78页
计算机二级笔试宝典习题答案与详解.docx_第3页
第3页 / 共78页
计算机二级笔试宝典习题答案与详解.docx_第4页
第4页 / 共78页
计算机二级笔试宝典习题答案与详解.docx_第5页
第5页 / 共78页
点击查看更多>>
下载资源
资源描述

计算机二级笔试宝典习题答案与详解.docx

《计算机二级笔试宝典习题答案与详解.docx》由会员分享,可在线阅读,更多相关《计算机二级笔试宝典习题答案与详解.docx(78页珍藏版)》请在冰豆网上搜索。

计算机二级笔试宝典习题答案与详解.docx

计算机二级笔试宝典习题答案与详解

第一章C语言基础知识

一、选择题

1.【A】

分析:

C语言中,标志符包括:

关键字、预定义标识符、和用户标识符。

其中我们常用的关键字只有30来个,也就是说要学好C语言,我们只需要记住30来个单词就可以了。

用户标识符由字母、数字和_组成标识符只能由字母、数字和下划线组成;其第一个字符必须是字母或下划线;标识符区分大小写字母。

如int与Int是两个完全不同的标识符。

2.【B】

3.【B】

分析:

if为关键字,肯定不能做为用户标识符。

预定义标识符可以作为“用户标识符”使用,只是这将使这些标识符失去系统规定的原意,所以一般也不要将预定义标识符作为“用户标识符”使用。

4.【D】

分析:

sizeof为关键字,不能做为用户标识符。

5.【D】

分析:

用户标识符命名规则里规定,不能以数字开头。

6.【B】

分析:

与第5题类似。

7.【C】

分析:

与第5题类似。

8.【D】

分析:

int为关键字,所以不能定义为用户标识符,但是scanf为预定义标识符,最好也不要用做用户标识符。

9.【B】

分析:

A选项long为关键字;C选项以数字5开头;D选项中包括非法的.。

10.【A】

分析:

A选项中包括非法的.。

11.【C】

分析:

C选项中以数字开头。

12.【A】

分析:

B选项中包含非法的-;C选项中以数字开头;D选项中包含关键字。

13.【D】

分析:

该题有误,D)floatUSS应该为D)floatU$$。

由于D选项包含非法字符$,所以答案为D。

14.【A】

分析:

B选项中赋值运算符的左边不能是表达式;C选项中赋值运算符的左边不能是表达式;D选项中C语言中强制类型转换的正确格式应该为“(类型名)表达式”,即应该为(double)(x)/10。

15.【A】

分析:

%运算符的运算对象必须是整型,%=是%和=的复合运算符,所以其运算对象也必须是整型。

16.【C】

分析:

字符型变量可以被赋予单个字符和小于128的整型数据,当是整型数据时,相当于是对应字符的ACSII码值。

字符是用''括起来的单个字符。

17.【B】

分析:

在C语言中无“:

=”运算符,故A错误,C选项中int18.5%3应该为(int)18.5%3;D选项中赋值运算符的左边不能是表达式。

18.【B】

19.【B】

分析:

B选项中八进制中不能出现数字8。

20.【D】

分析:

十六进制数只能以0X或0x开头,不能以oX开头。

21.【C】

分析:

本题考查指数的表示形式,选项A中E后面只能是整数,0.5是小数;选项B中E后面不能为空;选项D中E前面不能为空。

22.【C】

分析:

本题考查指数的表示形式,选项A中E后面只能是整数,5.0是小数;选项B中E前面不能为空;选项D中E后面不能为空。

23.【A】

分析:

选项B中八进制中不能出现数字8,选项C中e后面不能是小数,选项D中e后面不能为空。

24.【B】

分析:

选项B中e后面是小数0.4,所以非法。

25.【B】

分析:

字符是用''括起来的单个字符字符常量是,B选项其实是一个转义字符。

26.【B】

分析:

选项B中e后面只能是整数,0.5是小数。

27.【D】

分析:

选项D中赋值运算符的左边不能是表达式。

28.【C】

分析:

选项C中E后面只能是整数,0.5是小数。

29.【D】

分析:

3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8,本题目考察算术运算符,需要注意整数除以整数结果只能是整数。

30.【C】

分析:

①a+=a-=9a=3

②a+=-6a=-6

③a=a+(-6)a=-12

31.【A】

分析:

A选项中最右边的赋值符号的左边不能为表达式,只能是变量,故A不正确。

32.【A】

分析:

本题考查C语言中的注释,程序中以“/*”开头并且以“*/”结尾的部分表示程序的注释部分。

计算机运行程序时,完全不理会程序的注释部分,这部分将被完全忽略掉。

因此/*给a赋值b=20;给b赋值*/不被运行,所以a=10,b=0;答案为A。

33.【B】

分析:

选项A中n2没有定义,选项C中在定义f之前不能使用它,选项D中E后面必须是整数。

34.【C】

分析:

选项C的强制类型转换int(f)应该为(int)f。

35.【D】

分析:

本题考查自增(自减)运算符:

自增运算符在变量之前时,变量的值加1,表达式的值为变量的值加1,自增运算符在变量之后时,变量的值加1,表达式的值为原变量的值。

自减运算符类似。

①printf("%d%d",++m,n++);输出的值为1334

m=13n=35

②printf("%d%d\n",--n,--m);输出的值为3412

n=34m=12

36.【C】

分析:

A选项中%的运算对象只能时整数;B选项的赋值运算符的左边不能是表达式;D选项的赋值运算符的左边不能是表达式。

37.【B】

分析:

语句必须以;结束,而A选项没有 ;号;C选项没有赋值符号=,因此不构成赋值表达式;D选项的强制类型转换应该为(int)(a+b)。

38.【B】

分析:

本题考查运算规则,*和/运算符的运算规则为从左到右运算。

当/运算符的运算对象为整型时,结果一定为整型,所以1/2=0。

39.【D】

分析:

自加、自减运算符的运算对象可以是char型变量、int型变量和float型变量,但不能是常量。

40.【A】

41.【B】

分析:

当运算符/的运算对象都是整型时,结果一定是整型,所以8/5=1,1+0.4结果为1.4,当1.4赋值给c时,因为c是整型,只能存储整型数据,系统会自动将.14转换为整型数据1,再将1赋值给c,答案为B。

42.【D】

分析:

(int)a+b/b=(int)5.5+2.5/2.5=5+1.000000=b=6.000000,答案为D。

43.【D】

分析:

当/运算符的运算对象为整型时,结果一定为整型。

y=x+3/2=x+1=3.000000。

答案为D。

44.【A】

分析:

1.0/c2*c1=1.0/2*1=0.5*1=0.5,由于c3为整型,0.5转换为0,再赋值给c3,所以c3的值为0。

45.【D】

46.【A】

分析:

本题考点与第35题类似,x++*1/3=11*1/3=3。

47.【D】

分析:

D选项中的$不是标识符的合法符号,标识符只能有字母、数字和下划线组成。

48.【A】

分析:

因为赋值运算符的左边不能是表达式,B和C选项错误;D选项中的强制类型转换int(x)应该为(int)x。

49.【C】

50.【A】

分析:

本题考查转义字符。

转义字符是用“\”后面跟八进制或十六制数来表示一个字符。

51.【C】

分析:

本题考查十进制和十六进制之间的转换。

52.【D】

分析:

通过#defined2,d为一常量,由于自增(自减)运算符的运算对象不能是常量,所以答案为D。

53.【C】

分析:

根据各进制数的规则很容易得出答案。

54.【A】

分析:

A选项应该为'\\',具体查看书本上的转义字符。

55.【D】

分析:

与第54题类似,具体查看书本上的转义字符。

56.【D】

57.【C】

分析:

字符常量是''括起来的单个字符或转义字符。

二、填空题

1.8.9

分析:

7+3.8/2=7+1.9=8.9

2.关键字预定义标识符用户标识符

3.8

4.八十十六

5.intfloatdouble

6.1617

分析:

本题考查自增运算符,a++表达式的值是a变化之前的值,a变量本身加1。

第二章顺序结构

一、填空题

1.【B】

分析:

A选项,printf函数可以没有输出项,当没有输出项时,函数输出“”括起来的字符串;C选项,在C语言中,整数可以以十进制、八进制或十六进制的形式输出,但不能以二进制的形式输出;D选项,调用getchar函数读入字符时,只能从键盘上输入字符。

所以答案选B。

2.【C】

分析:

C选项错误:

随意使用空语句将会导致逻辑错误。

3.【D】

分析:

在C语言中,所有的变量都必须先定义后使用,而在本程序中,变量π在使用之前没有定义,所以会出现编译错误,答案为D。

该程序的修改有两种方法:

1、在定义变量s时,同时定义变量π,并初始化为3.14;2、在程序最前面使用宏定义#defineπ3.14。

4.【D】

分析:

该printf函数的输出项为逗号表达式,根据printf函数的定义,没有语法错误;在上一章,我们学习了,逗号表达式的值为最后一个表达式的值,所以表达式(x,y)的值为y的值,即2003,因此答案为D。

5.【A】

分析:

本题主要考查数据的表示方式,和printf函数的格式控制。

%d表示以十进制输出数据,%o表示以八进制输出数据,m的值是以十进制表示的,所以以原样输出,n的值是以八进制表示的,所以也以原样输出,答案为A。

6.【C】

分析:

同上题一样,本题也是考查数据的表示方式,和printf函数的格式控制。

%X表示以十六进制输出数据,通过计算,m的值为十六进制的0,所以答案为C。

通过该题我们必须注意一点,不管以十进制、八进制还是以十六进制输出数据时,数据前面不会有0、0x。

7.【B】

分析:

本题考查自增、自减运算符,以及printf函数的输出项。

从printf函数的一定可以知道,当输出项为表达式时,输出该表达式的值;自加(自减)在变量之前时,表达式的值为变量加1以后的值,自加(自减)在变量之后时,表达式的值为变量的原始值,答案为B。

8.【C】

分析:

本题考查点与第5、6题类似,只是n的值是以十进制表示的,但却是以八进制输出的,所以要先转化为八进制,即为0400,所以答案为C。

9.【B】

分析:

printf函数的定义:

当输出格式说明个数少于输出项时,那么多余的输出项不输出。

所以只输出666,答案为B。

10.【C】

分析:

012转为十进制为10,再以指定的两位格式输出为10;十进制102有三位,指定位数是两位。

当指定格式的位数少于输出数据的位数时,按实际数的位数输出,即输出102,答案为C。

11.【B】

分析:

①a=f/=c*=(x=6.5)

②a=f/=c*=6.5x=6.5

③a=f/=65c=65

④a=100.0/65=1f=100.0/65=1.5

⑤a=1,c=65,f=1.5,x=6.5

12.【B】

分析:

本题考查长整形变量的输出格式。

%和d中间必须加l(L的小写)。

13.【C】

分析:

①m=(k+=i*=k)

②m=(k+=i=2*2=4)i=4

③m=(k=2+4=6)k=6

④m=6

答案为C。

14.【C】

分析:

同10题类似,当指定格式的位数少于输出数据的位数时,按实际数的位数输出,即输出1234。

答案为C。

15.【D】

分析:

自加(自减)运算符,根据“符号在前,先加减后使用;符号在后,先使用后加减。

”进行计算

①x=-m++x=-3,m=4

②x=x+8/++n

③x=-3+8/5=-2

④x=-2

答案为D。

16.【D】

分析:

从scanf函数的定义可以得出答案。

17.【A】

分析:

在scanf()函数中,“”括起来的格式说明中,除了输入格式控制之外,其它的都要原样输入,所以答案为A。

18.【A】

分析:

本题考查的与第17题一样,在scanf()函数中,“”括起来的格式说明中”,”要原样输入,所以答案选A。

19.【C】

分析:

本题考查运算符的优先级和简单的编程思想,大家通过答案反过来推敲以知道如何形成解决一个问题的编程思想。

20.【A】

分析:

由getchar()函数的定义可得知答案,请大家理解透该函数的定义。

21.【A】

分析:

用scanf()函数输入字符型数据,当输入格式为%d时,等于输入以该整型数据为ASCII码值的字符,所以答案为A。

22.【B】

分析:

A:

main()函数后面不能有;号;C:

注释以/**/成对括起来的;D:

命令行必须以#号开始。

所以答案为B。

23.【C】

分析:

本题考查的知识点与第17、18题一样,只不过时一种逆向思维。

24.【B】

分析:

输入的是876543.0,由于输入格式说明中指定了a的位数为两位,所以计算机会把87分配给a;接着计算机继续把6分配给b,由于6后面输入的是空格,计算机认为分配结束.同时把6转为6.000000(b是实型变量)

25.【A】

分析:

本题与第7、15题类似。

26.【D】

分析:

在prinf()函数的格式控制中,两个连着写的%,计算机会输出一个%,接下来的d原样输出。

所以答案为D。

27.【B】

分析:

该题是考查scanf()函数的输入格式控制,以及后面的数组的知识,将在后面详细讲解。

28.【A】

分析:

此题不好解析,大家只要记住这一点,并在以后学习过程中注意就可以了。

29.【A】

分析:

scanf()函数的定义:

输入项为变量的地址,所以选项A,B错误;本题还牵涉到指针变量的概念,后面将会学习到,变量d其实是一个指针变量,指针变量其实就是储存一个变量的地址,所以选项B错误。

30.【D】

分析:

此题和第7题类似。

31.【D】

分析:

此题考查自减运算符、逗号运算符和printf()函数的概念,前两个知识点,在前面的题目中,我们已经讲述过了;当printf()函数的输出项为表达式时,输出的是该表达式的值,对于表达式z+1的值为3,所以答案为D。

32.【B】

分析:

本题只要很好地理解scanf()函数的定义,很容易得出答案。

33.【A】

分析:

本题有误:

“不正确的输入形式”应该改为“正确的输入形式”。

只要很好地理解scanf()函数的定义,很容易知道答案为A。

本题还考查了一个知识点,那就是分隔符,在C语言中,有三类分隔符,分别是:

回车、空格和tab键。

34.【D】

分析:

先计算a*a的值为9,再计算a-=9(此时a的值是3),计算后a的值为-6,整个表达式(a-=a*a)的值是-6,然后计算a加上表达式的值(此时a的值为-6),输出结果为-12

35.【A】

分析:

表达式c-25相当于字符c的ASCII值减25,当以%c的格式输出时,相当于输出ASCII值为c-25的字符,所以答案为A。

36.【B】

分析:

gets()函数可以从键盘读入含有空格字符的字符串,它以回车为输入结束的标志。

37.【C】

38.【C】

分析:

由于x为int型变量,所以x=1.2后,x的实际值为1;由于y也是int型变量,所以y=(x+3.8)/5.0后,y的值为0。

因此d*y的值为0,答案为C。

39.【A】

分析:

此题考查算术运算符号“/”的使用,由于“/”的运算对象为整型,所以其结果只能是整型,20/3=6,答案为A。

40.【A】

分析:

与第35题类似。

41.【B】

分析:

printf()函数的定义:

“”括起来的部分除了%d之外其它的原样输出。

42.【C】

分析:

本题考查转义字符,'\b'是退格符,所以遇到'\b',就会把前面一个字符删除掉,\'、\\为转义字符,分别输出'和\,所以答案为C。

43.【C】

分析:

本题不好用文字表述,请大家通过编译器调试看结果,并记住这个知识点。

二、填空题

1.88

分析:

0210转为十六进制为88

2.1

分析:

本题涉及到第三章选择结构的内容,将在第三章讲述。

3.220.000000

分析:

①x=f*=n/=(c=50)c=50

②x=f*=n/=50

③x=f*=2n=2

④x=20.0f=20.0

本题需要注意的地方,当以%f格式输出的时候,小数点后保留6位。

4.11

分析:

9转为8进制是11

5.252137

分析:

本题考查十进制、八进制和十六进制之间的相互转化,输出格式中的空格对应输出。

6.7

分析:

a='H'-'A'+'0'a=7+'0',所以以%c格式输出时,结构为字符7。

7.1B

分析:

运行a=getchar();scanf("%d",&b);后,a='B',b=33,其它的运算和第6题类似。

8.n1=%d\nn2=%d

分析:

从输出结果中可知:

n1=n2=必须在相应位置输入,并且输出n1后要换行。

这种题目在考试时(笔试和机试)经常出现,大家一定要多加训练。

9.i=10,j=20回车

分析:

scanf()函数中,除了%d之外,其它的都要原样输入。

10.B66

分析:

字符A的ACSII码值为65,所以字符B的ACSII码值为66,当以%d格式输出ch时,即输出66。

11.b

分析:

相同字符的小写的ACSII码值比大写的ACSII码值大32。

12.261

分析:

177转为8进制是261

13.-3

分析:

%运算符的操作必须时整数(正整数和负整数)。

14.16

分析:

赋值运算符的运算规则为从左往右。

①a+=(a=8)

②a+=8a=8

③a=16

15.2,1

分析:

①a=a+ba=3b=2

②b=a-ba=3b=1

③a=a-ba=2b=1

该类题必须小心,千万不能忘记“,”号,否则为0分。

16.10300

分析:

%*d表示忽略一个数的输入,10赋值给i,20被忽略,30赋值给j,而k未获得新的值,保持原值0,所出输出10300。

17.12

分析:

输入时,12分析作为字符'1'和'2'赋值给ch1和ch2。

第三章选择结构

一、选择题

1.【B】

分析:

此题主要考察逻辑运算。

首先x=1,y=1,那么!

x为0,y--是--在后,则先使用后自减,y的值就是表达式y--的值,为1。

因此!

x||y--等价于0||1,结果为1。

2.【D】

分析:

此题主要是考语句的特征。

一条语句只包含一个分号,D项有两个分号,应该是两条语句,所以选D。

if(b==0)m=1;是条if语句,n=2;是条赋值语句。

3.【D】

分析:

此题主要是考逻辑运算和关系运算的优先级别.掌握!

、算术运算符和&&的优先级别依次降低。

4.【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。

5.【D】

分析:

此题是考真假条件的转换,其中D项中只有k为0时,!

k%2==1才成立,显然和A、B、C三项不同。

6.【A】

分析:

此题主要是考逻辑运算符!

、&&和||之间的优先级别。

最高,&&次之,||最低。

先求得!

a为0,所以不必计算!

b的值,即!

a&&!

b的值为0,由c=0,!

c=1,而0||1=1,所以选A。

7.【C】

分析:

此题考到了关系运算和逻辑运算及一定数学知识。

|x-y|<10可等价为-10

8.【C】

分析:

此题主要是考查逻辑运算符||,当计算机碰到a||b,先计算表达式a的值,若为假才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=1,则0||b必为0。

题中b>a为真,所以(n=b>a)为1,那么将不会去计算m=a

答案选C。

9.【D】

分析:

此题考到if-else语句。

A、B、C三项都是表示a为真时输出x,为假时输出y,而D则是a为假时输出x,为真时输出y。

10.【C】

分析:

此题主要是考查if-else-if和if语句。

A选项,c

B选项,a<3为真,执行x=3;。

C选项,a<3为真,执行x=3;然后a<2也为真,执行x=2;a<1为假,所以最后x的值为2。

D选项的分析同C选项。

11.【A】

分析:

此题主要是考查if语句和条件表达式的转化。

只要理解了if语句和条件表达式的运算规则的话,就很容易选出A。

12.【D】

分析:

见教材例题。

13.【B】

分析:

此题主要是考查if-else-if以及关系表达式的运算。

首先判断第一个条件a>b>c的值为0,所以不执行其后的语句;在判断第二个条件,c-1>=d表达式的结果为真,所以执行其下面的语句,那么将输出d+1的值为3,所以选答案B。

14.【D】

分析:

此题主要考查if,else的配对问题。

这里在if后面跟了两条语句,其中第一条是if的子句,第二条是条独立的语句,这样第二条语句就夹在了if和else之间,使得else找不到和它配对的if。

所以程序会出错。

15.【C】

分析:

请大家记住:

else总是和之前与其最近的且不带else的if配对。

16.【A】

分析:

此题考查的是条件表达式的求解顺序。

参照附录可知,它的结合方向是自右至左,所以先求得右边一个条件表达式的值为2,再求得左边一个的值为1,即选A。

17.【B】

分析:

此题考查的是条件表达式求解问题。

先看第一个条件表达式语句,a

再看第二个条件表达式语句,k>c为假,所以条件表达式等价于k=k;所以答案选B。

18.【C】

分析:

此题考查的是真假条件的等价问题。

x-y为真表示x-y是非0的,也即x-y<0或x-y>0。

所以答案选C。

19.【C】

分析:

此题主要是考查条件表达式和条件运算符。

首先求括号内条件表达式a>c?

a:

c的值为c,那么整个表达式就等价于d=a>b?

c:

b;求解这个条件表达式得d=c,所以答案选C。

20.【D】

分析:

此题主要是考查在switch语句中break和default的作用及break的适用范围。

break语句可以在switch语句中使用也可以在循环结构中使用,只能在这两个地方使用。

switch语句中可以有default也可以没有。

switch语句中可以有break语句也可以没有。

21.【D】

分析:

此题主要考查switch语句的语法规则。

A选项错在swich(a+b);这里多了一个分号。

请大家注意switch后圆括号中的表达式的值必须是整型或字符型,不能为实型。

B选项错在有两个case3。

C选项case后面只能是常量表达式,而这里出现变量,所以错误。

答案选D。

22.【C】

分析:

同21题。

23.【A】

分析:

此题主要考查if和else配对问题。

此题关键就是else是与第二个if配对组成一条if-else语句。

因此首先判断a>b为假,那么跳过其子句,即if-else语句,直接执行最后一条printf语句,将d输出。

因此答案选A。

二、填空题

1.10200

分析:

此题多数同学会得到的答案是10201,显然是没有弄清楚第三条赋值语句:

c=(a%b<1)||(a/b>1).这是将后面一个逻辑表达式的值给c。

先计算第一个圆括号里面的内容,a%b的值是10(而不是0),所以10<1为假;a/b的值为0,0>1为假。

在逻辑或运算的时候,两个运算对象都为假,则结果为假。

所以c的值为0.答案是:

10200

2.0

分析:

此题主要考查关系表达式。

我们主要就是要计算a>b>c的值,首先a>b为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1