计算机二级《C语言》考前押题密卷与答案详解.docx
《计算机二级《C语言》考前押题密卷与答案详解.docx》由会员分享,可在线阅读,更多相关《计算机二级《C语言》考前押题密卷与答案详解.docx(22页珍藏版)》请在冰豆网上搜索。
计算机二级《C语言》考前押题密卷与答案详解
2015年计算机二级《C语言》考前押题密卷
一、选择题
1若有定义“doublea;”,则正确的输入语句是( )。
A.
B.
C.
D.
参考答案:
D
参考解析:
本题考查seanf函数的调用形式:
scanf(格式字符串,输入项地址表)。
题中定义变量a为双精度型变量,双精度变量的格式符为“le”;变量的地址用取地址符“&”加变量名表示,所以选项D正确。
2s1和s2已正确定义并分别指向两个字符串。
若要求:
当s1所指串大于s2所指串时,执行语句s;则以下选项中正确的是( )。
A.if(sl>s2)S;
B.if(strcmp(s1,s2))S;
C.if(stremp(s2,s1)>0)S;
D.if(stremp(sl,s2)>0)S;
参考答案:
D
参考解析:
在C语言中,不能直接比较两个字符串的大小,必须用特定的函数来完成,选项A错误;选项B不管大于还是小于都执行S,不符合题意;选项C正好相反,当s2大于sl时,执行语句S,可知选项D正确。
点击查看试题笔记(12)3函数调用strcat(strcpy(str1,str2),str3)的功能是( )。
A.将字符串str1复制到字符串str2中后再连接到字符串str3之后
B.将字符串str1连接到字符串str2之后再复制到字符串str3之后
C.将字符串str2复制到字符串str1之后再将字符串str3连接到字符串str1之后
D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中
参考答案:
C
参考解析:
strcat(sl,s2)函数的功能是把s2字符串连接到s1字符串末尾,strcpy(sl,s2)是把s2字符串复制到sl字符串,要保证s1的容量。
4有以下程序:
程序的输出结果是( )。
A.2870B.4284C.2668D.3981
参考答案:
A
参考解析:
1-100内打印出如下数,这个数,可以被7整除,前一个数可以被3整除,再前一个数可以被2整除,最终运行结果为2870,因此正确答案为A。
5三种基本结构中,能简化大量程序代码的是( )。
A.顺序结构B.分支结构C.选择结构D.重复结构
参考答案:
D
参考解析:
重复结构也称为循环结构,它根据给定的条件,判断是否需要重复执行某一相同或类似的程序段,这种可以简化大量的程序行。
6下列叙述中错误的是( )。
A.一种数据的逻辑结构可以有多种存储结构
B.数据的存储结构与数据的处理效率无关
C.数据的存储结构与数据的处理效率密切相关
D.数据的存储结构在计算机中所占的空间不一定是连续的
参考答案:
B
参考解析:
数据的存储结构分顺序存储结构和链式存储结构,一个数据的逻辑结构可以有多种存储结构。
顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素通过指针就联系在一起了。
所以所占的存储空间不一定是连续的。
7有下列函数定义:
该函数的类型是( )。
A.int类型B.float类型C.void类型D.函数无类型说明,定义有错
参考答案:
A
参考解析:
本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。
8下列函数的类型是( )。
A.IntB.B.不确定C.voidD.float
参考答案:
A
参考解析:
本题考查函数值的类型。
在函数调用时,尽管y的类型是float,x的类型是double,但是因为函数定义时没有指定类型说明,系统默认函数值的类型为int型,所以计算后Y的类型是int型。
9设有定义的语句:
“charcl=92,c2=92;”,则以下表达式中的值为零的是( )。
A.
B.
C
D.
参考答案:
A
参考解析:
当值相同时按位异或,则为0,按位或与按位与时仍不变,负数也为非0。
10下列程序的输出结果是( )。
A.2B.0C.1D.不确定的值
参考答案:
C
参考解析:
第一个if语句,先判断条件,发现a
11有以下程序:
程序的运行结果是( )。
A.CDEFB.ABEFC.ABCDD.CDAB
参考答案:
A
参考解析:
在函数funl()之前定义了全局字符变量a和b。
这两个变量的作用域是从其定义处开始到整个程序末结束。
在函数funl()之内定义了两个变量a和b,并且分别初始化为字符ˊCˊ和ˊDˊ。
12设有如下定义:
则下列程序段的输出结果为( )。
A.8,10B.6,8C.7,9D.6,2
参考答案:
D
参考解析:
程序中ptr指针指向数组arr的首地址,*ptr=arr[0]=6,*(ptr2)=2.故选D。
13以下叙述中正确的是( )。
A.在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误地表示
B.C程序由主函数组成
C.C程序由若干函数组成
D.C程序中只允许包含一个函数
参考答案:
C
参考解析:
整型是没有问题的,实型在存诸的时候,是用科学记数法存的,没有办法得到准确值的,是有一定误差的。
C程序是由若干的函数组成,不只有主函数,函数是C程序的基本组成部分。
但是C程序中必须有一个而且只能有一个以main(主函数)开头的函数,因为C程序的执行是从main函数开始的,所以正确选项为C。
14有下列程序段:
为使此程序段不陷入循环,从键盘输入的数据应该是( )。
A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数
参考答案:
D
参考解析:
本题主要考查do=while循环,因为变量t的初始值等于l,经过第一次do=while循环后,执行t-t-1这条语句一次,所以变量t的值为-1,判断关系表达式t!
=n是否成立,如果关系表达式成立,则执行第二次循环,如果关系表达式不成立,退出循环。
由此可见,只要输入变量n的值为负奇数,则一定会使t!
-n成立,故退出do-while循环。
15若变量已正确定义为int型,要给a、b、C输入数据,正确的输入语句是( )。
A.
B.
C.
D
参考答案:
D
参考解析:
scanf是键盘输入语句,%d是打印十进制文件,&x就是把你从键盘输入的值赋给x后面依此类推,因此正确答案为D。
16若有运算符:
>、一、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为( )。
A.%、sizeof、>、<<、=B.sizeof、%、>、一、<、%、=D.sizeof、%、<<、>、=
参考答案:
D
参考解析:
主要考查运算符的优先级。
sizeof的优先级最高,其次是%<<、>,优先级最低的是“=”。
17若有定义:
“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为( )。
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+J)D.*(a+i)+J
参考答案:
A
参考解析:
通过地址来引用数组元素的方法有下列5种:
①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i][j]);⑤(&a[0][0]4-3*i+j)。
故A正确。
18有以下程序段:
程序段的输出结果是( )。
A.
B.
C.
D.9
参考答案:
B
参考解析:
第一次n=10>7n--后n=9,所以输出9;
第二次n=9>7n--后n=8,所以输出8;
第三次n=8>7n--后n=7,所以输出7;
第四次n=7=7结束。
19已知有如下结构体:
若有P=&data,则对data的成员a引用正确的是( )。
A.
B.
C.
D.
参考答案:
B
参考解析:
本题主要考查结构指针:
p=&data,访问结构体的成员。
它可以通过结构变量访问,即data可以用等价的指针形式:
(*p).a和p->a来访问结构体变量中的成员。
20以下选项中不合法的用户标识符是( )。
A.abc.cB.fileC.MainD.PRINTF
参考答案:
A
参考解析:
C语言规定标识符只能由字母、数字、下划线组成,并且只能由字母或下划线开头。
A中包含点符号,因此A选项不合法。
21下列叙述中正确的是( )。
A.一个逻辑数据结构只能有一种存储结构
B.逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
参考答案:
D
参考解析:
数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。
一种数据结构可以根据需要采用不同的存储结构,存储结构有顺序和链式两种。
不同的存储结构,其处理的效率不同。
22下列数据结构中,能用二分法进行查找的是()。
A.顺序存储的有序线性表B.结性链表C.二叉链表D.有序线性链表
参考答案:
A
参考解析:
二分法查找只用于顺序存储的有序线性表,而顺序查找用于顺序存储的非有序线性表和线性链表。
23当执行以下程序段时,( )。
A.循环体将执行一次
B.B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误
参考答案:
A
参考解析:
do-while的功能是先执行一次循环体,再判断条件是否成立,当x=-1时,执行d0语句,x=x*x=1,接着执行while后的表达式,其值为0,退出循环,因此循环体只执行了一次。
24若a和b均是正整型变量,正确的switch语句是( )。
A.switch(pow(a,2)+pow(b,2))(注:
调用求幂的数学函数)
B.
C.
D.
参考答案:
A
参考解析:
B中switch(a*a+b*b);后面不应该有分号,C中应为switch(a)。
点击查看试题笔记(5)25常采用的两种存储结构是( )。
A.顺序存储结构和链式存储结构
B.散列方法和索引方式
C.链表存储结构和数组
D.线性存储结构和非线性存储结构
参考答案:
A
参考解析:
线性表的存储通常要用两种存储结构:
顺序存储结构和链式存储结构。
26数字字符0的ASCⅡ值为48,运行以下程序的输出结果是( )。
A.3,2B.50,2C.2,2D.2,50
参考答案:
C
参考解析:
b++是先用表达式的值然后自增1,因此表达式值为ˊ2ˊ,b为ˊ3ˊ;b-a=ˊ3ˊ-ˊ1ˊ=2,因此最后输出的结果为2,2,前一个为字符2,后一个为数字2。
27设计软件结构是软件生命周期的( )。
A.软件定义期B.软件开发期C.软件维护期D.以上3个都不是
参考答案:
B
参考解析:
本题是对软件设计结构的考查。
设计软件结构是软件概要设计阶段进行的,而概要设计属于软件开发期。
28
则在使用函数stcat(s1,s2)后,结果是( )。
A.s1的内容更新为abcdefghi
B.s1的内容更新为defghi\0
C.s1的内容更新为defghiabc\0
D.s1的内容更新为abcdefghi\0
参考答案:
D
参考解析:
strcat(sl,s2)函数的功能是把s2字符串连接到sl字符串的末尾,要保证s1有足够的空间容纳下连接后的字符串。
29有下列程序:
程序执行后的输出结果是( )。
A.35B.37C.39D.3975
参考答案:
D
参考解析:
执行第一次for循环时,用表达式p[i][j]!
=ˊ\0ˊ来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。
if语句表示(P[i][j]-ˊ\0ˊ)除2的余数不为0时,即字符串所有奇数执行后面的语句。
所以退出第1次for的循环体时,输出为397,执行第2次循环体。
对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。
30在结构化分析方法中,数据字典的作用是( )。
A.存放所有需要处理的原始数据
B.存放所有处理的结果
C.存放所有程序文件
D.描述系统中所用到的全部数据和文件的有关信息
参考答案:
D
参考解析:
在C语言中,结构化分析方法中的数据字典的作用是描述系统中所用到的全部数据和文件的有关信息。
31以下能正确定义二维数组的是( )。
A.
B.
C.
D.
参考答案:
B
参考解析:
选项A中对于二维数组,必须通过赋值的个数来确定其长度,没有赋值则无法确定。
选项C中赋的是空值,也不能确定其行下标。
选项D中定义的两行三列,而赋值的却是三行两列。
32下面for语句的循环次数为( )。
for(x=l,y=0;(y!
=19)&&.(x<6);x++);
A.是无限循环B.循环次数不定C.最多执行6次D.最多执行5次
参考答案:
D
参考解析:
本题考查for循环的使用。
根据条件考虑x的取值变化,x从1取到5,可以循环5次,但并不知道y如何变化,有可能出现y=19提前跳出循环的情况,所以最多执行5次。
33以下选项中正确的整型常量是( )。
A.12.B.-20C.1.000D.456
参考答案:
B
参考解析:
选项A,为float类型;选项c,中间有逗号不是一个常量;选项D,中间有空格,是三个连续的整形常量。
34下列叙述中正确的是( )。
A.用E—R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系
B.用E—R图只能表示实体集之间一对一的联系
C.用E—R图只能表示实体集之间一对多的联系
D.用E—R图表示的概念数据模型只能转换为关系数据模型
参考答案:
A
参考解析:
用E—R图可以描述实体及其相互之间的联系,还可以描述多个实体集之间的联系和一个实体集内部实体之间的联系。
用E—R图表示的概念数据模型不仅能转换为关系数据模型,还可以转换为其他数据模型,如网状模型和层次模型等。
所以A的说法正确。
35有以下程序,其中函数f的功能是将多个字符串按字典顺序排序( )。
程序运行后的输出结果是( )。
A.2B.3C.6D.4
参考答案:
D
参考解析:
函数voidf的功能是将字符指针数组*p[]中的每个字符串按照从小到大的顺序排列。
在主函数main()中,调用f(p,5)后,字符指针数组*p[5]中的字符串按照字典顺序从小到大排列为如下形式,即*p[5]-{″aab-dfg″,″abbd″,″abc″,″cd″,″dcdbe″),因此P[1]=″abdb″,strlen(p[1])=4。
36下列叙述中错误的是( )。
A.线性表是由n个元素组成的一个有限序列
B.线性表是一种线性结构
C.线性表的所有结点有且仅有一个前件和后件
D.线性表可以是空表
参考答案:
C
参考解析:
线性表可以是空表,在线性表中,第一个结点没有前驱结点(前件),最后一个结点没有后继结点,其他结点有且只有一个前驱点(后继点)。
37不合法的main()函数命令参数形式是( )。
A.
B.
C.
D.
参考答案:
C
参考解析:
在C语言中,main()函数也可以有参数,例如,main(intargc,char*argv),argc是指字符串的指针数组,而其他几项表达不正确。
38若已定义:
则能够正确表示数组元素a[1][2]的表达式是( )。
A.*((*prt+1)[2])B.*(*(p+5))C.(*prt+1)+2D.*(*(a+1)+2)
参考答案:
D
参考解析:
A:
多了外层的*()。
B:
P是行地址,加5越界。
C:
少了外层的*()。
39若有以下的定义:
“intt[3][2];”,能正确表示t数组元素地址的表达式的是( )。
A.
B.
C.
D.
参考答案:
C
参考解析:
数组的下标是从0开始的,选项A中越界,行下标和列下标都不能越界;选项B中,虽然是个地址,但是也同样越界了;选项C中表示的是第一个的首地址;选项D表示的是其元素的值,并不是地址。
40若有定义和语句:
则输出结果是( )。
A.20.10B.20,20C.10,20D.10,10
参考答案:
D
参考解析:
本题考查指针变量的赋值。
**pp是定义一个指针变量,语句pp=&P是将pp指向指针p,*p和**pp都是指针P所指的内存空间的内容,即b的值。
二、程序填空题
41请补充main()函数,该函数的功能是:
输入两个正整数Num1和num2,求这两个数的最大公约数和最小公倍数。
例如,若输入的两个正整数为12,4,则它们的最大公约数为4,最小公倍数为12。
注意:
部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在main()函数的横线上填入所编写的若干表达式或语句。
试题程序:
参考解析:
三、程序改错题
42下列给定程序中,函数proc()的功能是:
按顺序给str所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。
若str所指数组中元素的个数不是5的倍数,多余部分忽略不计。
例如,str所指数组有17个元素,则只对前15个元素进行处理,不对最后的2个元素求平均值。
程序执行结果为Theoriginaldata:
246810
1214161820
2224262830
3224
Theresult:
6.0016.0026.00
请修改函数proc()中的错误,使它能得出正确的结果。
注意:
不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
}
参考解析:
错误:
if(i+1%5==0)
正确:
if((i+1)%5==0)
【解析】按题目中要求,对每5个元素求平均值。
每取到5个元素的标志为(i+1)对5取余为0,而表达式“i+1%5”表示的含义为变量i加上1对5取余,因此,应改为“if((i+1)%5==0)”。
四、程序设计题
43请编写函数proc(),它的功能是计算下列级数和,和值由函数值返回。
S=1+x+x2/21+x3/31+…+xn/n!
例如,当n=20,x=0.2时,函数值为1.。
注意:
部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
参考解析:
【解析】首先定义两个变量分别存放各项的分母和所有项的和,通过n次循环求出n项的和。
最后把所有项的和返回到主函数中。