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

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

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

参考答案及分析

  一、选择题

   (1)C

  【命题目的】考查考生对数据结构分类的理解。

  【解题要点】根据数据结构中各数据元素之间前后件关系的复杂程序,一般将数据结构分为两大类:线性结构和非线性结构。线性结构是指满足以下两个条件的非空的数据结构:一是有且只有一个根结点,二是每一个结点最多有一个前件,也最多有一个后件。如是一个数据结构不是线性结构,则称为非线性结构。

  【考点链接】数据结构的各种分类方法及标准。

   (2)B

  【命题目的】本题考查二叉树的基本概念及其基本性质。

  【解题要点】按照题目的要求可得到满足条件的二叉树,如下图所示:

  故该二叉树中总的结点个数为13。

   (3)D

  【命题目的】要求考生对几种排序方法的实现机制有充分的理解。

  【解题要点】快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩下的子表采用同样的方法,直到表空为止;归并排序是将两个或两个以上的有序表组合成一个新的有序表。

  【考点链接】各种排序方法实现过程及实现机制。

   (4)B

  【命题目的】本题考查了结构化程序设计的原则。

  【解题要点】结构化程序设计方法的主要原则可以概括为以下4个方面,即自顶向下、逐步求精、模块化及限制使用goto语句。

  (5)B

  【命题目的】掌握软件调试技术的方法。

  【解题要点】调试的关键在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法。

  【考点链接】软件调试的各种方法及各种方法的区别。

  (6)B

  【命题目的】本题考查了几种常用的算法描述工具及其基本知识。

  【解题要点】常见的过程设计工具有:程序流程图、N-S图、PAD图和HIPO图。其中,为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为N-S图。

  【考点链接】其他常用算法描述工具的概念。

   (7)B

  【命题目的】记忆软件复杂性度量的参数。

  【解题要点】定量度量方法是程序复杂程度经常使用的方法,把程序的复杂程度乘以适当参数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同设计或两个不同算法的优劣,程序的定量的复杂程度可作为模块规模的精确限度,因而软件复杂性度量的参数包括规模。

  【考点链接】软件复杂性度量的方法及各种度量参数的作用。

  (8)B

  【命题目的】本题考查数据库系统的基础知识 -- 数据库系统的组成部分。

  【解题要点】数据库系统(Database System,简称DBS)由如下几部分组成,即数据库、数据库管理系统、数据库管理员、硬件和软件。

   (9)B

  【命题目的】考查对数据库系统各方面之间的关系。

  【解题要点】数据库管理系统是对数据库进行管理和对数据库进行操作的管理系统,它是建立在操作系统基础之上的,位于操作系统和用户之间的一层数据管理软件,负责对数据库的数据进行统一的管理和控制,它是实现数据库和管理数据库的核心。

  【考点链接】数据库系统各方面之间的关系及相互作用。

   (10)B

  【命题目的】本题主要考查了数据库概念设计中,视图设计的基本概念。

  【解题要点】视图设计一般有3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。

  【考点链接】数据库概念设计的过程:首先选择局部应用,再进行局部视图设计,最后对局部视图进行集成得到概念模式。

  (11)D

  【命题目的】C++语言关键字的概念。

  【解题要点】关键字是C++语言中预先定义并实现一定功能的一类单词,它不是由用户定义的,它是一种功能性单词。

  【考点链接】注意关键字不能用做用户标识符。

   (12)B

  【命题目的】关于C++语言中函数的基本概念。

  【解题要点】C++语言中函数在被调用以前必须先被声明,主函数是程序的入口函数,用户定义的函数是可以被重复调用的,C++语言中面向对象程序设计的基本组成单元是类。

  【考点链接】主函数可以放在程序中的任何位置。

  (13)A

  【命题目的】C++语言运算符的使用。

  【解题要点】C++语言规定:取余运算符的运算对象必须是整型,复合运算符"%="中包含%运算,它的运算对象也必须是整型。

   (14)D

  【命题目的】考查C++语言中的转义字符。

  【解题要点】在C++语言中退格符表示为\b退格。

  【考点链接】其他转义字符的意义:\n表示回车换行,\t表示横向跳到下一制表位置,\v表示竖向跳格,\r表示回车,\f表示走纸换页,\\表示反斜线符,\a表示鸣铃,

  \ddd1~3位表示八进制数所代表的字符,\xhh1~2位表示十六进制数所代表的字符。

  (15)D

  【命题目的】关于C++语言中逻辑运算符的考查。

  【解题要点】在C++语言中,逻辑运算符有4个,它们分别是!(逻辑非)、||(逻辑或)、&&(逻辑与)、^(异或)。在位运算里面还有&(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在语句x=(a&&b)&&(c<′B′);中,先判断a&&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然c<′B′是成立的,显然,该表达式的值为1。

  (16)B

  【命题目的】考查C++语言中while语句的应用

  【解题要点】该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过n--运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件n>6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环体时输出为6,由此可以排除C)。

  【考点链接】while与do-while的区别。

  (17)A

  【命题目的】本题考查对指针数组的掌握。

  【解题要点】指针数组的定义、赋初值、数组元素的引用与赋值等操作和一般数组的处理方法基本相同。需要注意指针数组是指针类型的,对其元素所赋的值必须是地址值。其格式是"存储类型数据类型*指针数组名1[长度1]={初值1},功能是定义指向"数据类型"变量或数组的指针型数组,同时给指针数组元素赋初值。这些指针变量具有指定的"存储类型"。本题中指针*p指向数组a,表达式*(p+3)+=4的含义是*(p+3)= *(p+3)+4,而*(p+3)在数组中指向的值为9,最后输出的结果为9+4=13。

  【考点链接】一个语句的结束要有分号。

  (18)D

  【命题目的】C++语言中字符串的赋值。

  【解题要点】C++语言中操作一个字符串常量的方法有:①把字符串常量存放在一个字符数组之中;②用字符指针指向字符串, 然后通过字符指针来访问字符串存贮区域。当字符串常量在表达式中出现时, 根据数组的类型转换规则, 它被转换成字符指针。本题D)项中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。

  (19)C

  【命题目的】数据类型的默认转换。

  【解题要点】本题中,先将x转换为浮点型再与3.8相加,得到结果与5.0相除。最后将得到的结果去掉小数位化成整型数据赋给y。另外,值得注意的是,整型、实型、字符型数据间可以混合运算。在进行运算时,不同类型的数据先转换成同一类型,然后再进行运算。

  【错解分析】如果认为执行y=(x+3.8)/5.0后y的值为1是错误的,此时y的值为0。

  【考点链接】x为int型,将1.2赋值给x时,x的值为1。

  (20)B

  【命题目的】本题考查了函数的递归调用的应用。

  【解题要点】在main函数中,对f(1)和f(2)的值进行了累加。过程如下:

  f(1)=1

  f(2)=f(1)+1=2

  最后,j的值为1+2=3。

  【考点链接】函数的递归调用需要有一个结束的条件。

   (21)C

  【命题目的】考查C++语言中类定义的结束符号。

  【解题要点】C++语言中类定义的结束符号是分号。

  【考点链接】函数的定义不需要分号。

  (22)B

  【命题目的】考查C++语言中类定义用它自己定义数据的方法。

  【解题要点】C++语言中类定义中若想用该类来定义数据只能定义为指针类型的,而不能定义为普通类型的。

  【考点链接】C++语言类的定义的方法

   (23)B

  【命题目的】关于C++语言基类中虚函数的继承问题。

  【解题要点】C++语言中基类的虚函数是可以被派生类继承的。

  【考点链接】虚函数和纯虚函数的区别。

  (24)C

  【命题目的】C++语言中继承中的赋值问题。

  【解题要点】C++语言中基类的构造函数是可以被派生类继承并赋值的。

  【考点链接】构造函数和析构函数均无返回值。

  (25)A

  【命题目的】考查C++语言中操作符重载中成员函数重载和友元函数重载的不同。

  【解题要点】成员函数和友元函数可重载的运算符有些相同的,有些是不同的,友元函数没有this指针,二者重载相同运算符时的参数肯定是不同的,成员函数重载运算符时都必须声明为公有的。

  【考点链接】友元函数的声明关健字是friend。

  (26)A

  【命题目的】考查C++语言中运算符重载。

  【解题要点】C++语言中运算符重载中只能用友元函数重载的运算符是<<和>>。

  (27)A

  【命题目的】考查C++语言中数组初始化问题。

  【解题要点】如果定义数组时没有进行初始化,则其各个成员的值不确定。

  【考点链接】使用数组时应先赋初值。

  (28)A

  【命题目的】考查C++语言中格式控制标志。

  【解题要点】C++语言中默认小数的输出位一共是六位,fixed的意义是在小数点后保留六位,scientific的意义是以科学计数法输出小数,本题中,100.8989663的默认输出就是100.899,fixed输出是 100.898966,scientific输出是1.008990e+002。

  【考点链接】C++语言中的小数输出及各种控制方法。

   (29)D

  【命题目的】字符串指针的考查。

  【解题要点】C++语言规定,如果指针变量q已指向数组中的一个元素,则q++指向同一数组中的下一个元素(而不是将q的值简单的加1)。本题中q是long型指针,每个long型数据占内存字节数为4,所以q++则由当前位置向右移动4个字节,所以最后显示出的是 efgh。

  【考点链接】请注意*(p++)与(*p)++的区别。

  (30)A

  【命题目的】字符串指针的考查。

  【解题要点】字符z的ASCII码值为122,经过c-25运算后,得97。

  【考点链接】C++语言中,字符也可参与算术运算,运算时用的是字符的ASCII码值。

  (31)B

  【命题目的】考查结构体的用法。

  【解题要点】:C++语言规定数组名代表数组的首地址,也就是第0号元素的地址,在本题中s就是s[0]的地址,指针变量p指向s,也就是指向s[0],所以在for循环累加的是s[0]的score成员值。

  【考点链接】注意结构体与类的区别。

  (32)C

  【命题目的】数据成员内存的占用。

  【解题要点】本题中,格式符0表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。C++语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号。

  【考点链接】for循环的次数就是字符串\ta\018bc的长度。

   (33)B

  【命题目的】本题考查带参数的宏定义及应用方法,这种宏不只是进行字符串的替换,还要进行参数的替换。

  【解题要点】格式为:#define 宏名(参数表) 字符串

  本题的替换过程是sun=x+y+z*y+z,将其各值带入即可。

  【考点链接】注意在替换的过程不要随意加入括号。

   (34)A

  【命题目的】函数传参的方式。

  【解题要点】本题函数fun中形参是两个指针变量,函数fun只是将这两个指针的指向的地址交换了一下而并没有交换它们所指向的地址中的数据。虽然,主函数中声明的变量a,b是整型变量而函数fun中的形参是两个指针变量,这两个变量仅仅是两个参数,与主函数中的那两个变量含义是不同的。

  【考点链接】采用指针或引用可将值交换。

  (35)D

  【命题目的】考查static的用法和意义。

  【解题要点】对函数的静态局部变量是在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。

  【考点链接】静态函数只能用静态变量。

  二、填空题

   (1)时间复杂度和空间复杂度

  【命题目的】本题考查了考生对算法的理解程度。

  【解题要点】算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小的估计。算法的计算量是算法的时间复杂性,算法所需存储空间大小是算法的空间复杂性。

  【考点链接】算法的各种属性及其相互作用。

   (2)存储结构

  【命题目的】本题考查了数据结构所包括的几个方面。

  【解题要点】数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。

  【考点链接】数据结构包含的3个方面及各方面之间的关系。

   (3)对象类

  【命题目的】本题考查了对象的一些基本特征。

  【解题要点】类描述的是具有相似性质的一组对象;把具有相同属性的一些不同对象归为类,我们称之为对象类。

   (4)过程

  【命题目的】本题考查软件工程的3要素。

  【解题要点】软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的基础上的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。

  【考点链接】软件工程的3个要素及各要素的作用。

   (5)实体完整性

  【命题目的】掌握关系的完整性约束。

  【解题要点】关系的完整性约束指关系的某种约束条件,包括实体完整性、参照完整性和用户定义的完整性。其中,前两种完整性约束由关系数据库系统自动支持。

  【考点链接】关系的各种性质。

  (6)下划线

  【命题目的】考查C++语言的标识符的正确性。

  【解题要点】C++语言标识符只能由数字,字母和下划线组成,并且只能以字母和下划线为开头。

  【考点链接】C++中的关键字不能用作标识符。

  (7)2

  【命题目的】C++存储字符串与字符的不同。

  【解题要点】计算机存储一个字符用1个字节,存储字符串时,每个字符占用1个字节,另在字符串的有效字符之后存储1个字符串的结束标记符′\0′。

  【考点链接】如用户不指定加入结束标记符′\0′,则系统会自动加入结束标记符′\0′。

   (8)*(str+i)`str[i]

  【命题目的】考查字符串指针。

  【解题要点】str是指针变量,它指向字符型数据,在循环过程中,可以用 *(str+i)来访问字符串中的第i个元素,判断是否是结束标志,如果不是,i=i+1,继续取下一个元素进行判断,直到 *(str+i)的值为′\0′为止,也可以用下标的方式引用字符,如*(str+i)相当于str[i]。

  【考点链接】C++中字符串指针的相关问题。

   (9)0~for(i=0;i  【命题目的】for循环的使用方法。

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

  【考点链接】本题采用冒泡法查找一次。

   (10)类的成员对象

  【命题目的】C++类中成员对象初始化的顺序问题。

  【解题要点】C++中类的成员对象比类的对象先初始化。

   (11)cc.B::show();

  【命题目的】关于C++中用加域名解决二义性的方法。

  【解题要点】class A中有show()函数,class B中也有show()函数,class C继承了class A和class B,产生二义性,这时C的对象cc必须用域名来确定调用的是哪个show函数,因为答案是1 1,所以要加域名B::。

  【考点链接】C++中二义性的解决方法。

  (12)0~1

  【命题目的】考查C++中运算符重载中用成员函数和友元函数重载。

  【解题要点】C++中友元函数重载一元运算符要有一个参数,重载二元运算符要有两个参数,而用成员函数重载时,重载一元运算符没有参数,重载二元运算符要有一个参数。

  (13)T1 A(T1 a){return ++a;}

  【命题目的】C++中函数模板的定义。

  【解题要点】通过两个实例知道该例中只有一种数据类型,所以在定义模板时只需定义一个模板参数T1。

上一页456下一页

视频学习

我考网版权与免责声明

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

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

最近更新

社区交流

考试问答