2012年计算机二级C++第四套笔试模拟试题及答案分析

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

本文导航
  • 第1页:选择题(1)—(10)
  • 第2页:选择题(11—(20)
  • 第3页:选择题(21)—(30)
  • 第4页:选择题(31)—(35)
  • 第5页:填空题(1)—(13)
  • 第6页:参考答案及分析

参考答案及分析

  一、选择题

  (1)A

  解析: 线性表是一种线性结构,数据元素在线性表中的位置只取决于它们自己的序号,即数据元素之间的相对位置是线性的;栈、队列、线性链表实际上也是线性表,故也是线性结构;树是一种简单的非线性结构。

  (2)C

  解析: 循环链表就是将链表的最后一个结点指向链表头结点(或第一个结点),即p->next=head。

  (3)B

  解析: 当数据表A中每个元素距其最终位置不远,说明数据表A按关键字值基本有序,在待排序序列基本有序的情况下,采用插入排序所用时间最少,故答案为选项B)。

  (4)A

  解析: 程序设计应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。

  (5)A

  解析: 结构化分析的常用工具有数据流图、数据字典、判定树和判定表。而PAD图是常见的过程设计工具中的图形设计。

  (6)D

  解析: 软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。

  (7)D

  解析: 需求分析中的常用工具有PAD、PFD及N-S等,而DFD(数据流图)为结构化分析工具。

  (8)C

  解析: 此题属于记忆性的题目,NULL是指未知的值或无任何值。

  (9)C

  解析: 一旦数据库中的数据遭受破坏,需要及时进行恢复,RDBMS一般都提供此种功能,并由DBA负责执行故障恢复功能。

  (10)C

  解析: 数据模型所描述的内容有3个部分,它们是数据结构、数据操作和数据约束。其中,数据模型中的数据结构主要描述数据的类型、内容、性质,以及数据库的联系等;数据操作主要是描述在相应数据结构上的操作类型与操作方式。

  (11)B

  解析: 面向对象程序设计的主要特征是继承性,封装性和信息隐藏,多态性。

  (12)B

  解析: C++语言是对C语言进行了扩充,继承了它的语法,并增加了面向对象的设计方法。

  (13)C

  解析: 根据混合运算规则,如果有一个数据是double型,则其他数据类型先转化为double型,运算的结果最终也是double型。为保证精度的不丢失,表达式的数据类型是变量和常量中精确度最高的变量类型。

  (14)D

  解析: 逻辑运算符"||"表示或的意思。

  (15)B

  解析: 该题是一个for循环嵌套语句。第一层for循环循环2次,第二层循环3次,但当j等于0和1时,将执行continue语句,不执行x++运算,所以每次执行完内循环后,x的增量为1。最后一个x++运算将每次累加起来就是x的值。

  (16)C

  解析: 本题考查简单的if…else语句。先执行条件if(a  (17)D

  解析: C++语言规定了一个字符串结束标志,以字符′\0′代表,在遇到′\0′时,表示字符串结束,由它前面的字符组成字符串。

  (18)D

  解析: 本题考查字符串数组和指针的引用方式。在C++语言中,系统在每个字符串或数组的最后自动加入一个字符′\0′,作为字符的结束标志,在本题中,char a[]="It is mine";所表示的a字符串实际含有11个字符。

  (19)B

  解析: 在C++语言中,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。了解了实参指针变量的改变情况,本题只剩下简单的"加减法"了。

  (20)D

  解析: 本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应认为*k的值为数组中的某一下标值,即*k=0。

  (21)B

  解析: 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。逻辑与运算符"&&"需要两边的结果都为1时,其结果才为1。

  (22)D

  解析: C++的this指针是系统默认产生的一个指针,它是const的,所以是不能够被改变,不能够被赋值的。

  (23)B

  解析: 类D继承了类C和类B,所以在构造的时候分别构造类B和类C。

  (24)D

  解析: 虚函数一定不能定义为静态的。虚函数可以声明为友元,子类也不是必须重定义父类的虚函数,若在重定义虚函数时使用了virtual,则该重定义函数不一定还是虚函数。

  (25)A

  解析: C++中用成员函数重载++x为:x. operator++(),用友元函数重载++x为:operator++(x),用成员函数重载x/y为:x. operator/(y),用友元函数重载x/y为:operator/(x,y)。

  (26)C

  解析: C++语言中默认小数的输出位一共是6位,fixed的意义是在小数点后保留6位。

  (27)D

  解析: 选项D)第一层括号中为数组a中第i项元素的值,外面再加指针运算符没有意义。

  (28)B

  解析: 本题的运算过程是fun((int)fun(a+c,b),a-c),fun((int)fun(10,5),2-8),fun((int)15.000000,-6),fun(15,-6)=9。

  (29)A

  解析: 本题中有成员函数和它的重载函数,要注意它们的不同,在本题中先调用了init函数,初始化了X,Y,都为0,valueX(5);又将X变为5,所以输出5和0,然后初始化init(6,2),接着又valueY(4);将X,Y设为6和4,所以输出6和4。

  (30)B

  解析: C++基本的性质就是它的封装性,而封装性主要是靠类来实现的。

  (31)A

  解析: 左移运算符"<<"是双目运算符。其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。左移1位,相当于该数乘以2。

  (32)B

  解析: 这是一种简单的情况:不带参数的宏。关键要注意在对2*M+1进行宏替换时,要将宏名M原样替换,得到NUM的形式为2*N+1+1(千万不要随意把给N+1加上小括号,使NUM变为2*(N+1)+1,这就是宏名和变量名之间的区别)。

  (33)B

  解析: 在函数体语句中的b+=*a;的*是指针运算符(也称间接访问运算符),*a就是main函数中a的值。

  (34)B

  解析: C++语言函数中定义的变量都是属于这个函数的局部变量。

  (35)B

  解析: fib(3)=fib(2)+ fib(1),而fib(2)的返回值为2,fib(1)的返回值也为2,故输出的fib(3)的值为4。

  二、填空题

  (1)0

  解析: 根据冒泡排序算法思想可知,若待排序的初始序列为"正序"序列,则只需进行一趟排序,在排序过程中进行n-1次关键字间的比较,且不移动和交换记录,这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换次数为0。

  (2)O(nlog2n)

  解析: 在最坏情况下,冒泡排序所需要的比较次数为n(n-1)/2;简单插入排序所需要的比较次数为n(n-1)/2;希尔排序所需要的比较次数为O(n15);堆排序所需要的比较次数为O(nlog2n)。

  (3)46

  解析: 串s中共有9个字符,由于串中字符各不相同,则其子串中有0个字符的1个(空串),1个字符的9个,2个字符的8个,3个字符的7个,4个字符的6个,5个字符的5个,6个字符的4个,7个字符的3个,8个字符的2个,9个字符的1个,共有1+2+3+4+5+6+7+8+9+1=46。

  (4)软件工具

  (5)谓词演算

  解析: 关系数据库中的关系演算包括元组关系演算和域关系演算。二者都是由原子公式组成的公式。而这些关系演算都是以数理逻辑中的谓词演算为基础的。

  (6)sizeof

  解析: C++语言中关键字运算符有3个分别new,delete和sizeof。new 是申请内存,delete是释放内存,sizeof是求字节数。

  (7)max=(a>b)?a:b;

  解析: 条件运算符要求有三个操作对象,称三目(元)运算符,它是C++语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3。所以我们可以写成(a>b)?a:b,它是一个"条件表达式"。执行顺序是如果(a>b)条件为真,则条件表达式取值a作为整个表达式的值,否则取值b作为整个表达式的值。

  (8)defg

  解析: 本题中,给数组s中的第5个元素s[4]赋以′\0′,则s数组中只有前4个元素有效,输出结果为defg。

  (9)j+=2~a[i]>=a[j]`a[i]>a[j]

  解析: strlen函数是测试字符串长度的函数,函数的值为字符串中的实际长度,不包括′\0′在内。

  (10)静态~非静态

  解析: 静态成员函数可以直接访问该类中的静态数据成员,而不能访问该类中的非静态数据成员。

  (11)virtual int A()= 0;

  解析: C++语言中的纯虚函数是一种特殊的函数,它没有自己的定义,只有声明,纯虚函数与虚函数声明的不同就在于在函数后面加上了"=0"。

  (12)x+y++`x+(y++)

  解析: 因为y.operator++(0)是对成员y重载运算符,所以是成员重载,在参数表中又有一个参数,是重载后缀++,即是x+(y++)。

  (13)fin

  解析: 如果程序没有用close()主动关闭文件,则在文件流对象退出作用域时,被调用的析构函数会关闭对象所联系的文件。但应及时关闭,以便尽早释放占用的系统资源并将文件置于更安全的状态。

上一页456下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答