1、国家二级 C+机试(选择题)模拟试卷 38及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)算法的效率只与问题的规模有关,而与数据的存储结构无关 ( B)算法的时间复杂度是指执行算法所需要的计算工作量 ( C)数据的逻辑结构与存储结构是一一对应的 ( D)算法的时间复杂度与空间复杂度一定相关 2 下列叙述中正确的是 ( A)线性表链式存储结构的存储空间一般要少于顺序存储结构 ( B)线性表链式存储结构与顺序存储结构的存储空间都是连续的 ( C)线性表链式存储结构的存储空间可以是连续的,也可以 是不连续的 ( D)以上说法均错误 3 某二叉树共有 12个结点,其中叶子结点只有 1个。则该
2、二叉树的深度为(根结点在第 1层) ( A) 3 ( B) 6 ( C) 8 ( D) 12 4 对长度为 n的线性表作快速排序,在最坏情况下,比较次数为 ( A) n ( B) n-1 ( C) n(n-1) ( D) n(n-1)/2 5 结构化程序设计中,下面对 goto语句使用描述正确的是 ( A)禁止使用 goto语句 ( B)使用 goto语句程序效率高 ( C)应避免滥用 goto语句 ( D)以上说法均错误 6 下 面不属于软件测试实施步骤的是 ( A)集成测试 ( B)回归测试 ( C)确认测试 ( D)单元测试 7 下面不属于软件需求分析阶段主要工作的是 ( A)需求变更申
3、请 ( B)需求分析 ( C)需求评审 ( D)需求获取 8 一般情况下,当对关系 R和 S进行自然连接时,要求 R和 S含有一个或者多个共有的 ( A)记录 ( B)行 ( C)属性 ( D)元组 9 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( A)选择 ( B)差 ( C)交 ( D)并 10 有表示公司和职员及工 作的三张表,职员可在多家公司兼职。其中公司 C(公司号,公司名,地址,注册资本,法人代表,员工数),职员 S(职员号,姓名,性别,年龄,学历),工作 W(公司号,职员号,工资),则表 W的键(码)为 ( A)公司号,职员号 ( B)职员号,工资
4、 ( C)职员号 ( D)公司号,职员号,工资 11 下列选项中,不是 C+ 关键字的是 ( A) const ( B) using ( C) class ( D) final 12 若有定义语句 “double a=2/3.0;“,则语句 cout=b) n=0; ( C) if(a=b) n=0; else if (b=c) n=1; ( D) if(a using namespace std; int main() int x=4; do x-; cout using namespace std; void _ int z=x; x=y; y=z; int main() int x=0,
5、y=1; f(x,y); cout using namespace std; class XB int a; public: static int b; XB(int aa):a(aa) b+; XB() b-; int get() return a; ; int XB:b=0; int main() XB d(2); int n=d.get()+XB(3).get(); cout using namespace std; class Point int x,y; public: Point(int x1=0, int y1=0):x(x1),y(y1) int get() return x+
6、y; ; class Circle Point center; int radius; public: Circle(int cx, int cy, int r):center(cx,cy),radius(r) int get() return center.get()+radius; ; int main() Circle c(3,4,5); cout #include using namespace std; class MyBag public: MyBag(string br,string cr):brand(br),color(cr) +count; MyBag() -count;
7、static int GetCount() return count; private: string brand,color; static int count; ; int MyBag:count=0; int main() MyBag one(“CityLife“,“Gray“),two(“Micky“,“Red“); _ return 0; 若程序运行时的输出结果为 2,则横线处缺失的语句不可能是 ( A) cout #include using namespace std; class Wheel public: Wheel(string s=“W“):name(s) coutGet
8、Value(); / sp-Task:GetValue(); / sp-Displayed:GetValue(); / sp-Draw(); / 在标注号码的语句行中,对类中成员访问存在二义性的是 ( A) ( B) ( C) ( D) 34 有如下类定义: class Point public: void SetX(int xx) x=xx; protected: void SetY(int yy) y=yy; private: int x,y; ; class Circle:public Point public: int GetRadius() return radius; privat
9、e: void SetRadius(int r) radius=r; int radius; ; 派生类 Circle 中私有成员的个数为 ( A) 2 ( B) 4 ( C) 5 ( D) 6 35 有如下程序: #include #include using namespace std; class Father public: Father(string s):name(s) Father() cout #include using namespace std; class Animal public: virtual string GetType() const return “Ani
10、mal“; 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 public: string GetType() const return “Cat“; string GetVoice() const return “Miaow“; ; void Type(Animal a) cou
11、t void swap(T a, T b, int size); ( B) template void swap(int size, T a, T b); ( C) template void swap(T1 a, T2 b, int size); ( D) template void swap(T1 a, T2 b, int size); 39 要利用 C+ 流进行文件操作,必须在程序中包含的头文件是 ( A) iostream ( B) fstream ( C) strstream ( D) cstdlib 40 在语句 “coutc时, n为 0; ab时, n为 0;与该意思相同的就是
12、 D选项,而 A选项 if语句中的判断语句不正确。 14 【正确答案】 A 【试题解析】 本题考查引用概念和使用,题目中 r为 x的引用,所以 与 x的值相同,结果为 A, A选项正确。 15 【正确答案】 A 【试题解析】 本题考查 do while循环,执行第一次时,输出 x为 3,执行第二次的时候为 1,所以输出结果为 31, A选项正确。 16 【正确答案】 D 【试题解析】 extern定义的变量表示已经在别的地方定义,这里只是引用,所以不会对该变量分配内存空间,所以 D选项错误。 17 【正确答案】 C 【试题解析】 本题主要考查运算符重载函数,题目中说该运算符重载函数没有参数,那
13、么只能是重载一元运算符,所以需要一个操作数,并 且有默认 this指针,所以是成员函数, C选项错误。 18 【正确答案】 C 【试题解析】 本题考查引用的概念和使用方法,引用使用 后输出三个数之和,所以是 12, C选项正确。 29 【正确答案】 C 【试题解析】 本题考查常成员函数,其定义的一般形式如下: 返回值类型 常成员函数名 (参数列表 ) const; 所以 C选项正确。 30 【正确答案】 D 【试题解析】 当在类的非静态成员函数中访问类的非静态成员的时 候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,所以 正确使用 this指针。而 为静态成员,没有 this指针,
14、答案为 D选项。 31 【正确答案】 B 【试题解析】 本题考查静态数据成员和静态成员函数,静态成员函数只能使用本类中的静态数据成员,且静态成员函数不归属任何一个对象,而是属于类,题目中要求输出 2,那么就要将 count输出,题目中定义了两个对象,都对 count进行了 +,所以调用静态成员函数直接使用类名, B选项正确。 32 【正确答案】 A 【试题解析】 定义 Monocycle bike1时,执行 Wheel的构造函数输出 W,然后执行 Monocycle的构造函数输出 E,执行 Monocycle(“G“)时,输出 WG,最后执行析构函数,输出 DD,最终输出 WEWGDD,选项
15、A正确。 33 【正确答案】 A 【试题解析】 本题考查派生类对基类的继承二义性问题,类 Satellite公用继承Task和 Displayed,两个基类中都有 GetValue函数,所以引起二义性, A选项错误。 34 【正确答案】 A 【试题解析】 本题考查派生类对基类成员的访问属性,派生 类公用继承基类,基类的私有成员不可访问,所以派生类的私有成员只有本身的两个私有成员, A选项正确。 35 【正确答案】 C 【试题解析】 执行派生类构造函数的顺序是: 1、调用基类构造函数, 2、调用子对象构造函数, 3、再执行派生类析构函数,4、执行基类的析构函数。所以本题中执行析构函数为派生类的析
16、构函数、 Father的析构函数、 Mother的析构函数,所以输出 CFM,答案 C正确。 36 【正确答案】 C 【试题解析】 本题考查虚函数的运用,本题中定义 Dog d; Type(d)时,执行基类的 Type函数,输出 Animal,然后输出 speak,然后执行基类的 Speak函数输出Voice,最后输出 -,同理 cat输出类似,所以结果为 C选项正确。 37 【正确答案】 D 【试题解析】 模板形参由关键字 typename 或者 class声明,所以 D选项错误。 38 【正确答案】 B 【试题解析】 本题中使用模板 swap(a,b,10)时,第一个和第二个参数为数组,第三个参数为整型变量,而 B选项第一参数为整型变量与调用的时候不符合,所以B选项错误。 39 【正确答案】 B 【试题解析】 本题考查文件流操作时使用需要包含的头文件,属于基础知识, B选项正确。 40 【正确答案】 B 【试题解析】 本题考查提取运算符 , cout为对象名,所以 B选项正确。