1、国家二级 C+机试(选择题)模拟试卷 54及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)程序执行的效率与数据的存储结构密切相关 ( B)程序执行的效率只取决于程序的控制结构 ( C)程序执行的效率只取决于所处理的数据量 ( D)以上说法均错误 2 下列与队列结构有关联的是 ( A)函数的递归调用 ( B)数组元素的引用 ( C)多重循环的执行 ( D)先到先服务的作业调度 3 对下列二叉树 进行前序遍历的结果为 ( A) DYBEAFCZX ( B) YDEBFZXCA ( C) ABDYECFXZ ( D) ABCDEFXYZ 4 一个栈的初始状态为空。现将元素 1,2,3,A,
2、B,C依次入栈,然后再依次出栈,则元素出栈的顺序是 ( A) 1,2,3,A,B,C ( B) C,B,A,1,2,3 ( C) C,B,A,3,2,1 ( D) 1,2,3,C,B,A 5 下面属于白盒测试方法的是 ( A)等价类划分法 ( B)逻辑覆盖 ( C)边界值分析法 ( D)错误推测法 6 下面对对象概念描述正确的是 ( A)对象间的通信靠消息传递 ( B)对象是名字和方法的封装体 ( C)任何对象必须有 继承性 ( D)对象的多态性是指一个对象有多个操作 7 软件设计中模块划分应遵循的准则是 ( A)低内聚低耦合 ( B)高耦合高内聚 ( C)高内聚低耦合 ( D)以上说法均错误
3、 8 下面描述中不属于数据库系统特点的是 ( A)数据共享 ( B)数据完整性 ( C)数据冗余度高 ( D)数据独立性高 9 数据库设计过程不包括 ( A)概念设计 ( B)逻辑设计 ( C)物理设计 ( D)算法设计 10 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( A)自然连接 ( B)交 ( C)投影 ( D)并 11 下列选项中,正确的 C+ 标识符是 ( A) student-3 ( B) _3student ( C) 3student ( D) student3 12 下列选项中,正确的 C+ 表达式是 ( A) a1+ ( B) b+2 ( C
4、) 3=c ( D) d-=4 13 下列语句或语句序列中有语法错误的是 ( A) int i,j; for( i=0, j=0; i using namespace std; int main() int a6=27,57,20,42,56,18; int s1,s2; s1=s2=a0; for(int* p=a+1;p-a*p?*p:s1; s2=s2 using namespace std; class TV public: TV(int s=41):size(s) TV(const TV ; TV fun(TV return t; int main() TV x,y; x=fun(y
5、); return 0; 则 TV 类的复制构造函数被调用的次数是 ( A) 1次 ( B) 2次 ( C) 3次 ( D) 4次 31 有如下程序: #include #include using namespace std; class MyBag public: MyBag(string br=“ABC“):brand(br) cout #include using namespace std; class Wheel public: Wheel(string s=“W“):name(s) cout using namespace std; class Appliance public:
6、 Appliance() cout #include using namespace std; class Animal public: virtual string GetType() const return “Animal“; virtual string GetVoice() const return “Voice“; ; class Dog:public Animal public: string GetType() const return “Dog“; string GetVoice() const return “Woof“; ; class Cat:public Animal
7、 public: string GetType() const return “Cat“; string GetVoice() const return “Miaow“; ; void Type(Animal double d1,d2; 则下列调用中,错误的是 ( A) sum(d1,d2); ( B) sum(d1,d2); ( C) sum(d1,d2); ( D) sum(d1,d2); 39 关于 C+ 流,下面的表述中正确的是 ( A)利用 C+ 流能够借助于流对象进行输入输出 ( B)利用 C+ 流只能进行格式化输入输出 ( C)利用 C+ 流只能借助于 cin 和 cout 进行
8、输入输出 ( D)利用 C+ 流只能使用运算符 和 这四个运算符只能被重载为类的非静态成员函数,其他的可以被友元重载,主要是因为其他 的运算符重载函数都会根据参数类型或数目进行精确匹配,这四个不具有这种检查的功能,用友元定义就会出错,所以本题选择 B。 26 【正确答案】 D 【试题解析】 软件方面的可重用性是通过继承来实现的, A选项正确。派生类的构造函数负责调用基类的构造函数, B选项正确。虚基类解决了由多继承产生的二义性问题,所以 C选项正确。派生类可以继承基类的私有成员,但是不能直接访问,所以 D选项错误。 27 【正确答案】 C 【试题解析】 本题考查派生类定义时使用的关键字,三种继
9、承方式分别为private、 public、 protected,而 C选项为静态声明关键字,故选择 C。 28 【正确答案】 C 【试题解析】 本题考查派生类对基类成员的访问属性,派生类保护继承基类,那么基类的公用成员和保护成员在派生类中成为保护成员,所以派生类 YY总共有 3个保护成员, C选项正确。 29 【正确答案】 D 【试题解析】 在类体中定义的成员函数, C+系统会自动将它们作为内联函数处理,而在类外定义的成员函数,系统并不把它们默认为内联函数,所以 SetPrice不是内联函数, SetPrice的形参 val具有默认值 5.8,类体中有两个 GetPrice,所以这是对 Ge
10、tPrice 函数进行了重载, D选项错误。 30 【正确答案】 B 【试题解析】 拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。拷贝构造函数要调用基类的拷贝构造函数和成员函数。本题中调用 fun函数时调用了一次复制构造函数,函数返回执行 x=fun(y)时又调用了一次复制构造函数,所以总共 2次。 B选项正确。 31 【正确答案】 A 【试题解析】 本题考查构造函数的应用,题目中要求输出 “ABC ABC “,那么就需要执行两次构造函数,只有 A选择可以执行两次构造函数,所以 A选项正确。 32 【正确答案】 C 【试题解析】 定义 Bicy
11、cle bike时,执行 Wheel的构造函数输出 W,然后执行Bicycle的构造函数输出 RG,最终输出 WRG,选项 C正确。 33 【正确答案】 D 【试题解析】 一个派生类同时继承两个或者多个基类时称为多重继承,其一般形式为: class 派生类名: 继承方式 基类名 1, 继承方式 基类名 2,所以 D选项正确。 34 【正确答案】 A 【试题解析 】 本题考查派生类对基类成员的访问属性,派生类无论何种继承,派生类的成员函数都不能访问基类的私有成员,所以 Circle不可访问的个数有 2个, A选项正确。 35 【正确答案】 B 【试题解析】 执行派生类构造函数的顺序是: 1、调用
12、基类构造函数, 2、调用子对象构造函数, 3、再执行派生类析构函数,4、执行基类的析构函数,所以本题中定义 room1时,先调用基类构造函数输出A,然后执行 TV的构造函数输出 T41,而定义对象指针,并不会调用构造函数,所以什么也不输出,结果为 AT41, B 选项正确。 36 【正确答案】 A 【试题解析】 本题考查虚函数的运用,本题中定义 Dog d; Type(d)时,执行类class的 Type函数,输出 Dog,然后输出 speak,然后执行基类的 Speak函数输出Voice,最后输出 -,同理 cat输出类似,所以结果为 A选项正确。 37 【正确答案】 C 【试题解析】 本题
13、考查模板相关知识,一个类中存在纯虚函数,这个类不一定就是类模板。函数模板需要形式参数表,类模板中可以包含构造函数。所以 C选项正确。 38 【正确答案】 D 【试题解析】 本题考查函数模 板的定义和使用,编译器无法推演出 T1的类型,D选项里没有写明 T1的类型,而 sum函数需要 T1的类型去特化出一个函数能够处理 d1和 d2这两个参数的函数。其他的都可以。 39 【正确答案】 A 【试题解析】 输入输出流出了 cin和 cout还有 cerr、 clog等,所以 CD选项错误, C+ 流不只是进行格式化输入输出,所以 B选项错误, A选项正确。 40 【正确答案】 B 【试题解析】 本题考查输入输出格式的控制,先是定义宽度为 10个字符,然后填充字符, 1234只有四个字符,所以要在左侧填充 6个 * ,即输出 *1234, B选项正确。