1、2010 年 3月国家二级( C+)笔试真题试卷及答案与解析 1 下列叙述中正确的是 ( )。 ( A)对长度为 n的有序链表进行查找,最坏情况下需要的比较次数为 n ( B)对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为 (n/2) ( C)对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为 (log2n) ( D)对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为 (nlog2n) 2 算法的时间复杂度是指 ( )。 ( A)算法的执行时间 ( B)算法所处理的数据 量 ( C)算法程序中的语句或指令条数 ( D)算法在执行过程中所需要的基本运算次数
2、 3 软件按功能可以分为:应用软件、系统软件和支撑软件 (或工具软件 ),下面属于系统软件的是 ( )。 ( A)编辑软件 ( B)操作系统 ( C)教务管理系统 ( D)浏览器 4 软件 (程序 )调试的任务是 ( )。 ( A)诊断和改正程序中的错误 ( B)尽可能多地发现程序中的错误 ( C)发现并改正程序中的所有错误 ( D)确定程序中错误的性质 5 数据流程图 (DFD图 )是 ( )。 ( A) 软件概要设计的工具 ( B)软件详细设计的工具 ( C)结构化方法的需求分析工具 ( D)面向对象方法的需求分析工具 6 软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于 (
3、)。 ( A)定义阶段 ( B)开发阶段 ( C)维护阶段 ( D)上述三个阶段 7 数据库管理系统中负责数据模式定义的语言是 ( )。 ( A)数据定义语言 ( B)数据管理语言 ( C)数据操纵语言 ( D)数据控制语言 8 在学生管理的关系数据库中,存取一个学生信息的数据单位是 ( )。 ( A)文件 ( B)数据库 ( C)字段 ( D)记录 9 数据库设计中,用 E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的 ( )。 ( A)需求分析阶段 ( B)逻辑设计阶段 ( C)概念设计阶段 ( D)物理设计阶段 10 有两个关系 R和 T如下: 则由关系 R得到关系
4、 T的操作是 ( )。 ( A)选择 ( B)投影 ( C)交 ( D)并 11 下列关于函数的描述中,错误的是 ( )。 ( A)函数可以没有返回值 ( B)函数可以没有参数 ( C)函数可以 是一个类的成员 ( D)函数不能被定义为模板 12 若 MyClass是一个类名,其有如下语句序列: MyClass c1, *c2;MyClass*c3=new MyClass; MyClass&c4=c1;上面的语句序列所定义的类对象的个数是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 13 下列关于继承方式的描述中,错误的是 ( )。 ( A)如果不显式地指定继承方式,缺省
5、的继承方式是私有 (private) ( B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员 ( C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员 ( D)采用私有继承方式时,基类中的私有成员在派生类仍然是私有成员 14 将前缀运算符 “-”重载为非成员函数,下列原型中,能正确用于类中说明的是( )。 ( A) Decr&operator-int; ( B) Decroperator-(Decr&,int); ( C) friend Decr& cperator-(Decr&); ( D) friend Decr operacor-(Decr&,int); 15
6、若 MyTemp是一个具有一个虚拟类型参数的类模板,且有如下语句序列:MyTempp2; MyTempp32;编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 16 在 C+中, cin是一个 ( )。 ( A)类 ( B)对象 ( C)模板 ( D)函数 17 在下列字符中,不允许作为 C+标识符的是 ( )。 ( A) b ( B) B ( C) - ( D) 2 18 下列叙述中,错误的是 ( )。 ( A) false是一个逻辑型常量 ( B) ”b”是一个字符型常量 ( C) 365是一个 int
7、常量 ( D) 3.1415926是一个 double常量 19 若 x和 y是程序中的两个整型变量,则下列 if语句中正确的是 ( )。 ( A) if(x=0)y=l; else y=2; ( B) if(x=0)theny=1 elsey=2 ( C) if(x 0)y=l else y=2; ( D) ifx=0y=1 else y=2; 20 要定义整型数组 x,使之包括初值为 0的三个元素,下列语句中错误 的是 ( ) ( A) ihtx3=0, 0, 0; ( B) intx=0; ( C) static int x3=0; ( D) int x=,下列表述中错误的是 ( )。
8、( A) 中有可能包含关键字 int ( B) 中有可能包含自定义标识符 ( C) 中有可能包含字符 * ( D) 中可能包含 22 要定义一个引用变量 p,使之引用类 MyClass的一个对象,正确的定义语句是( ) ( A) MyClass p=MyClass; ( B) MyClass p=new MyClass; ( C) MyClass&p=new MyClass ( D) MyClassa, &p=a; 23 有如下两个类定义: class XX private: double X1; protected: double x2; public: doublex3; ); clase
9、 YY: protected XX private: doubley1; protected: doubley2; public: double y3; ; 在类 YY中保护成员变量的个数是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 24 下列关于运算符重载的描述中,错误的是 ( )。 ( A)可以通过运算符重载在 C+中创建新的运算符 ( B)赋值运算符只能重载为成员函数 ( C)运算符函数重载为类的成员函数时,第一操作就是该类对象 ( D)重载类型转换运算符时不需要声明返回类型 25 下列 关于类模板的描述中,错误的是 ( )。 ( A)类模板的成员函数都是模板函数
10、 ( B)可以为类模板参数设置默认值 ( C)类模板描述了一组类 ( D)类模板中只允许有一个类型参数 26 下列控制格式输入输出的操作符中,能够设置浮点数精度的是 ( )。 ( A) setprecision ( B) setw ( C) setfill ( D) showpoint 27 下列程序段中包含 4个函数,其中具有隐含 this指针的是 ( )。 int funl(); class Test public: int fun2(); friend int fun3(); static int fun4(); ; ( A) fun1 ( B) fun2 ( C) fun3 ( D)
11、fun4 28 有如下程序: #include using namespace std; Class Test public: Test() Test(const Test&t)coutshow(); delete ptr; return 0; 运行时的输出结果是 ( )。 ( A) 1_120 ( B) 2_120 ( C) 1_20 ( D) 2_20 36 一个队列的初始状态为空。现将元素 A, B, C, D, E, F, 5,4,3,2,1依次入队,然后再依次退队则元素退队的顺序为 _。 37 设某循环队列的容量为 50,如果头指针 front=45(指向队头元素的前一位置 ),尾指
12、针 rear=10(指向队尾元素 ),则该循环队列中共有 _个元素。 38 设二叉树如右:对该二叉树进行后序遍历的结果为 _。39 软件是 _、数据和文档的集合。 40 有一个学生选课的关系,其中学生的关系模式为:学生 (学号,姓名,班级,年龄 ),课程的关系模式为:课程 (课号,课程名,学 时 );其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课 (学号, _,成绩 )。 41 若 x和 y是两个整型变量,在执行了语句序列: x=5; y=6; y+=x-; 后, x+y的值为 _。 42 7.在执行语句序列: int i=0; do i+; while(i*ix)x=*p
13、a; retum x; 若在执行了语句: int x5=(23,46,78,55,16); 后,通过表达式 Xfun(x, 5)调用该函数,则得到的返回值为 _。 44 有如下的函数定义: int Xfun(int x) inty=x; int x=10; y+=x; return x+y; 通过表达式 Xfun5调用该 函数,则得到的返回值为 _。 45 假定 Xcs是一个类,该类中一个成员函数的原型为 “Xcs*abc; ”,则在类外定义时对应的函数头为 _。 46 请将下面的类 Date的定义补充完整,使得由语句: DateFirstDay; 定义的对象 FirstDay的值为 2010
14、年 1月 1日。 class Date public: Date(_): year(y), month(n), day(d) private: int year,month, day; /依次表示年、月、日 ; 47 12.请将下面的程序补充完整,使得程序输出 “飘是张娜的书 ”。 #include using namespace std class Book public: Book(char*str)|strcpy(title,str); _void Printlnfo()cout title endl; protected: char title50; ; class MyBook: p
15、ublic Book public: MyBook(char*s1,char*S2=“张娜 ”): _strcpy(owner,s2); virtual void PrintInfo()cout title “是 ” owner “的书 ” endl; private: charowner10; ; int main() Book*ptr=new MyBook(“飘 ”); ptr-Printlnfo(); return 0; 48 在有理数类 Rational中重载插入运算符 (模板函数形参表 )/函数定义体 ,其中 是有一个或多个 组成,每个 可以有这几种形式: typename, ;前两
16、种是等价的 typename和 class 可以互换,它们的参数为虚拟类型参数;最后一种的参数是常规参数 12 【正确答案】 B 【试题解析】 首先定义对象的格式: (存储类型 )(, , );第一句定义了对象 c1 和指针对象 c2,而 MyClass*c3=new MyClass是 Java里的定义方式, MyClass&c4=c1这种定义方式也是不对的。 13 【正确答案】 D 【试题解析】 采用私有继承方式时,基类中私有成员在派生类中是不可访问的成员。 14 【正确答案】 C 【试题解析】 把 “-”运算符重载为非成员 (友元 )函数格式: friendoperator-()是前缀的格
17、式; friendoperator-(int)是后缀的格式。当然也可以有参数如题中 C选项所示。 15 【正 确答案】 B 【试题解析】 类模板是一系列相关类的模板或样板,成员函数的源代码形式相同,不同的是所针对的类型不一样如题中的一个 double类型,一个 long类型;类模板中数据类型本身是它的参数,它是类的生成器。 16 【正确答案】 B 【试题解析】 C+提供了一套输入输出流类的对象,它们是 cin、 cout和 cerr,对应 c语言中的三个文件指针 stdin、 stdout stderr,分别指向终端输入、终端输出和标准出错输出 (也从终端输出 )。 cin 与 一起完成输入操
18、作, cout、 cerr与 )else,注意语句结束要以分号结尾,对照题中选项可知 A正确。 20 【正确答案】 D 【试题解析】 选项 D中整型 数组 x的第一个元素是 NULL 不是 0,故选 D。 21 【正确答案】 B 【试题解析】 又称函数类型,表示一个函数所计算 (或运行 )的结果值类型,这里的类型可以是预定义类型 (如 int)、复合类型 (如 double*)、用户定义类型 (如枚举类 ),若返回值只做更新 (或设置 )等操作,则该函数返回类型为 void类型,函数类型和内置数组不能作为返回类型,但类类型和容器类型可以被直接返回。 22 【正确答案】 D 【试题解析】 选项
19、A错误不存在这样的定义方式;选项 B 定义了一个 MyClass类的对象 p;选项 C是 Java里的定义方式。 23 【正确答案】 C 【试题解析】 派生类从基类保护继承 (classYY: protectedXX)时,基类的公有成员在派生类中变为保护成员,基类的保护成员在派生类中仍然是保护成员;本题中 YY本身有一个保护成员 y2,再加上基类 XX的 x2和 x3,故选 C。 24 【正确答案】 A 【试题解析】 运算符的重载是针对 C+中原有运算符进行的,不能通过重载创造新的运算符。 25 【正确答案】 D 【试题解析】 类模板是一系列相关类的模板, 类成员组成相同,成员函数的源代码形式
20、相同,所不同的是所针对的类型。类模板的成员函数都是模板函数,在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板实参。但可以为类模板的参数设置默认值。由此可知应选D。 26 【正确答案】 A 【试题解析】 setpreeision(int)是设置浮点数的精度, setw(int n)是设置输入输出宽度, setfill(char c)设置填充字符, showpoint即使小数部分为 0,也输出以及其后的无效 0。 27 【 正确答案】 B 【试题解析】 this 指针是成员函数所属对象的指针,是指向类对象的地址,是一个隐含的指针,隐含于每个类的非静态成
21、员函数中。 tun1()是外部函数, tun3()是友元函数, fun4()是静态成员函数,故选 B。 28 【正确答案】 C 【试题解析】 本题调用了 fun函数。 29 【正确答案】 D 【试题解析】 略。 30 【正确答案】 B 【试题解析】 类 Undergraduate从类 Student私有继承,继承方式缺省则默认是Private。 31 【正确答案】 A 【试题解析】 本题使用析构函数。 32 【正确答案】 B 【试题解析】 抽象类是类中至少有一个纯虚函数,抽象类是用来被继承的,即是用来生成派生类,它本身不能生成实例。 33 【正确答案】 C 【试题解析】 首先非成员函数一般都是
22、友元函数,相比成员函数第一个操作数是对象本身以 this指针的形式隐含在参数列表中,非成员函数调用必须显性的列出参数;选项 C中没有 MyClock 类型,故选 C。 34 【正确答案】 D 【试题解析】 ios_base: binary是作为二进制文件打开, ios_base: out是为输出而打开;故因选 D。 35 【正确答案】 B 【试题解析】 本题考查了类的继承。继承有三种方式, public公有、 pnvate私有和 protected 保护,本题都涉及到了。本题中类 D公有继承类 B。在类 B 中又定义了虚函数,并且有保护类静态类型 count及私有变量 x。主函数中调用类 D,
23、类 D又继承了类 B,经过系统及调用,本题最终结果为 2120。 36 【正确答案】 A, B, C, D, E, F, 5,4,3,2,1。 【试题解析】 队列 是先进先出的。 37 【正确答案】 15。 【试题解析】 队列个数 =rear-front+容量。 38 【正确答案】 EDBGHFCA。 【试题解析】 先遍历左子树,然后遍历右子树,最后遍历访问根结点,各子树都是同样的递归遍历。 39 【正确答案】 程序。 【试题解析】 参考软件的定义。 40 【正确答案】 课号。 【试题解析】 课号是课程的唯一标识即主键。 41 【正确答案】 15。 【试题解析】 y+=x-等同于 y=y+x,
24、 x=x-1, X-是先用原始 x然后再自减,于是y=6+5=11, x=4,最后 x+y=11+4=15。 42 【正确答案】 5。 【试题解析】 首先执行 d。一次不用判断,第四次 x变为为 4,但 x*x=910不成立,结束循环。 43 【正确答案】 78。 【试题解析】 函数 Xfun()的作用是找出最大的数。 44 【正确答案】 25。 【试题解析】 通过参数传递将 5传给 x,由语句 y=x;知 y=5,又有 x=10将 x重新赋值,而 y+=x使 得 y=15,于是 x+y返回 25。 45 【正确答案】 override。 【试题解析】 override是指派生类重写基类的虚函
25、数。 46 【正确答案】 iht year=2000,int month=1, int day=1。 【试题解析】 给各个参数赋值。 47 【正确答案】 virtual MyBook(char*s2)。 48 【正确答案】 ostream&。 【试题解析】 此题为重载 操作符,返回一个输入输出类型。 49 【正确答案】 template(typen)type square(type n)retum n*n; )。 【试题解析】 这是一个平方运算的函数模板,由上述实例可知遭模板有一个形参n,函数名为 square;所以可得模板 template(typc n)type csquare(type n)return n*n; )。