1、国家二级( C+)机试模拟试卷 64及答案与解析 一、选择题 1 算法的有穷性是指 ( )。 ( A)算法程序的运行时间是有限的 ( B)算法程序所处理的数据量是有限的 ( C)算法程序的长度是有限的 ( D)算法只能被有限的用户使用 2 下列运算符函数中肯定不属于类 FunNumber的成员函数的是 ( )。 ( A) intoperator-(FunNumber); ( B) FunNumberoperator-(); ( C) FunNumberoperator-(int); ( D) intoperator-(FunNumber,FunNumber); 3 有如下程序: class B
2、ase public: int data; ; class Derived1 : public Base ; class Derived2 : protected Base ; int main() Derived1 d1; Derived2 d2; d1.data = 0; / d2.data = 0; / return 0; 下列关于程序编译结果的 描述中,正确的是 ( )。 ( A) 皆无编译错误 ( B) 有编译错误, 无编译错误 ( C) 无编译错误, 有编译错误 ( D) 皆有编译错误 4 层次型、网状型和关系型数据库划分原则是 ( )。 ( A)记录长度 ( B)文件的大小 (
3、C)联系的复杂程度 ( D)数据之间的联系方式 5 下列运算符函数中,肯定不属于类 Number的成员函数的是 ( A) Numberoperator+(Number); ( B) Numberoperator-(Number); ( C) Numberoperator*(int); ( D) Numberoperator/(Number,Number); 6 有如下程序: #include #include using namespace std; class Person public: Person(string n):name(n) Person() cout using namesp
4、ace std; class B public: virtual void show() coutshow(); void fun2(B void fun3(B b) b.show(); int main() B b,*p=new D; D d; fun1(p); fun2(b); fun3(d); delete p; return 0; 执行这个程序的输出结果是 ( )。 ( A) BBB ( B) BBD ( C) DBB ( D) DBD 23 下列语句中,正确的是 ( A) charstr=“abcde“; ( B) char*str=“abcde“; ( C) charstr5=“a
5、bcde“; ( D) char*str5=“abcde“; 24 有如下类定义: class Cup public: void SetPrice(double val); private: double price; ; 若要在类体外给出对成员函数 SetPrice的定义,下列选项中正确的是 ( A) voidCup:SetPrice(doubleval)price=val; ( B) voidCup.SetPrice(doubleval)price=val; ( C) voidSetPrice(doubleval)Cup:price=val; ( D) voidSetPrice(doubl
6、eval)Cup.price=val; 25 在关系数据库中,用来表示实体间联系的是 ( A)属性 ( B)二维表 ( C)网状结构 ( D)树状结构 26 将运算符 *重载为类成员函数时,其参数表中有且仅有一个参数,说明该 运算符是 ( A)无操作数的运算符 ( B)无操作数的运算符 ( C)二元运算符 ( D)三元运算符 27 有如下程序: #include #include using namespace std; class Animal public: virtual string GetType() const return “Animal“; virtual string Get
7、Voice() const return “Voice“; ; class Dog:public Animal public: string GetType() const return “Dog“; string GetVoice() const return “Woof“; ; class Cat:public Animal public: string GetType() const return “Cat“; string GetVoice() const return “Miaow“; ; void Type(Animal i-=3) n+; 之后,变量 n的值是 ( A) 20 (
8、 B) 21 ( C) 60 ( D) 61 29 ClassA是一个类,且有如下语句序列 ClassA c1,*c2; ClassA *c3=new MyClass; ClassA 则 ClassA的构造函数被调用的次数是 ( A) 1 ( B) 2 ( C) 3 ( D) 5 30 下面描述中不属于软件需求分析阶段任务的是 ( A)撰写软件需求规格说明书 ( B)软件的总体结构设计 ( C)软件的需求分析 ( D)软件的需求评审 31 下列有关继承和派生的表述中,正确的是 ( A)派生类的成员函数可以访问基类的所有成员 ( B)如果一个派生类私有继承其基类,则该派生类的对象能访问基类的保护
9、成员 ( C)基类对象可以直接赋值给派生类对象 ( D)如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类 32 下列叙述中正确的是 ( A)每一个结点有两个指针域的链表一定是非线性结构 ( B)所有结点的指针域都为非空的链表一定是非线性结构 ( C)循环链表是循环队列的链式存储结构 ( D)线性结构的存储结点也可以有多个指针 33 下列运算符不能重载为友元函数的是 ( )。 ( A) =()()- ( B) +-+- ( C) “不能重载为类的友元函数。所以本题答案为 A。 34 【正确答案】 D 【试题解析】 在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对
10、应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表 (用 “也可以不要,因此选项 D错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。 35 【正确答案】 B 【试题解析】 本题考查 for循环语句,题目中每执行完循环体后, i都会减 2,那么只 有 50到 2之间的偶数才能输出 “*“,所以总共输出 25次。 36 【正确答案】 D 【试题解析】 本题考查静态成员函数。静态成员函数由于没有 this指针,所以不能访问本类中的非静态成员。引用静态成员函数有 2种方
11、式,一种是直接使用类来引用,即 Constants:getPI();另一种是使用对象来引用,即constants.getPI( )。所以本题答案为 D。 37 【正确答案】 B 【试题解析】 黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序内部的 逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明,所以本题选择 B)。 38 【正确答案】 A 【试题解析】 本题考查派生类的构造函数,其一般形式为:派生类构造函数名(总参数表列) :基类构造函数名(参数表列) 39 【正确答案】 A 【试题解析】 对象之间进行通信的构造叫做消息,
12、 A正确。多态性是指同一个操作可以是不同对象的行为, D错误。对象不一定必须有继承性, C错误。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作 , B 错误。 40 【正确答案】 B 【试题解析】 本题考查类的定义和对象的定义,题目中定义类 Te中又定义了 Te类型的对象 te,这样陷入循环中,所以 是错误的,答案为 B 选项。 二、基本操作题 41 【正确答案】 (1)public: (2)MyClass(intval): _m(val)或 MyClass(intval)_m=val (3)coutGetValue()”。 三、简单应用题 42 【正确
13、答案】 (1)MaxSpeed(maxspeed), Weight(weight) (2)virtual (3)virtual (4)publicbicycle, publicmotorcar 【试题解析】 (1)主要考查考生对构造函数的掌握情况, vehicle类在构造函数的成员初始化列表中,完成对数据成员的初始化操作。 (2)主要考查考生对虚继承的掌握,在继承虚基类时,派生列表中应该包含 virtual关键字。 (3)主要考查考生对虚继承的掌握,在继承虚基类时,派生列表中应该包含 virtual关键字。 (4)主要考查考生对多继承的掌握,在多继承的派生列表中,派生 类为每个基类指定访问级别。 四、综合应用题 43 【正确答案】 for(inti=0; ii; j-)从最后一位到 i到前一位遍历 elem if(elemielemj) 如果 elemi大于 elemj,则两值替换 inttemp=elemi; 定义整形变量 temp并赋值为 elemi; elemi=elemj; 给 elemi赋值 elemi elemj=temp; 给 elemj赋值 temp 【试题解析】 主要考查考生对排序算法的掌握,要排序的数组为 elem,元素个数为 counter,在这里使用下标 i和 j进行比较,当 elemielemj时,数组元素通过中间变量 temp 进行交换。