1、国家二级 C+机试(选择题)-试卷 18 及答案解析(总分:80.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中正确的是(分数:2.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关2.下列叙述中正确的是(分数:2.00)A.线性表链式存储结构的存储空间一般要少于顺序存储结构B.线性表链式存储结构与顺序存储结构的存储空间都是连续的C.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的D.以上说法均错误3.某
2、二叉树共有 12 个结点,其中叶子结点只有 1 个。则该二叉树的深度为(根结点在第 1 层)(分数:2.00)A.3B.6C.8D.124.对长度为 n 的线性表作快速排序,在最坏情况下,比较次数为(分数:2.00)A.nB.n-1C.n(n-1)D.n(n-1)/25.结构化程序设计中,下面对 goto 语句使用描述正确的是(分数:2.00)A.禁止使用 goto 语句B.使用 goto 语句程序效率高C.应避免滥用 goto 语句D.以上说法均错误6.下面不属于软件测试实施步骤的是(分数:2.00)A.集成测试B.回归测试C.确认测试D.单元测试7.下面不属于软件需求分析阶段主要工作的是(
3、分数:2.00)A.需求变更申请B.需求分析C.需求评审D.需求获取8.一般情况下,当对关系 R 和 S 进行自然连接时,要求 R 和 S 含有一个或者多个共有的(分数:2.00)A.记录B.行C.属性D.元组9.有三个关系 R、S 和 T 如下: (分数:2.00)A.选择B.差C.交D.并10.有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司 C(公司号,公司名,地址,注册资本,法人代表,员工数),职员 S(职员号,姓名,性别,年龄,学历),工作 W(公司号,职员号,工资),则表 W 的键(码)为(分数:2.00)A.公司号,职员号B.职员号,工资C.职员号D.公司号,职员号
4、,工资11.下列选项中,不是 C+ 关键字的是(分数:2.00)A.constB.usingC.classD.final12.若有定义语句“double a=2/3.0;“,则语句cout=b) n=0;C.if(a=b) n=0; else if (b=c) n=1;D.if(aGetValue(); / sp-Task:GetValue(); / sp-Displayed:GetValue(); / sp-Draw(); / 在标注号码的语句行中,对类中成员访问存在二义性的是(分数:2.00)A.B.C.D.34.有如下类定义: class Point public: void SetX(
5、int xx) x=xx; protected: void SetY(int yy) y=yy; private: int x,y; ; class Circle:public Point public: int GetRadius() return radius; private: void SetRadius(int r) radius=r; int radius; ;派生类 Circle 中私有成员的个数为(分数:2.00)A.2B.4C.5D.635.有如下程序: #include #include using namespace std; class Father public: F
6、ather(string s):name(s) Father() cout=b) n=0;C.if(a=b) n=0; else if (b=c) n=1;D.if(ab 时,n 为 0;与该意思相同的就是 D 选项,而 A 选项 if 语句中的判断语句不正确。14.有如下语句序列: int x=10, coutGetValue(); / sp-Task:GetValue(); / sp-Displayed:GetValue(); / sp-Draw(); / 在标注号码的语句行中,对类中成员访问存在二义性的是(分数:2.00)A. B.C.D.解析:解析:本题考查派生类对基类的继承二义性问题
7、,类 Satellite 公用继承 Task 和 Displayed,两个基类中都有 GetValue 函数,所以引起二义性,A 选项错误。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; private: void SetRadius(int r) radius=r; int radius; ;派
8、生类 Circle 中私有成员的个数为(分数:2.00)A.2 B.4C.5D.6解析:解析:本题考查派生类对基类成员的访问属性,派生类公用继承基类,基类的私有成员不可访问,所以派生类的私有成员只有本身的两个私有成员,A 选项正确。35.有如下程序: #include #include using namespace std; class Father public: Father(string s):name(s) Father() coutF; private: string name; ; class Mother public: Mother(string s):name(s) Mot
9、her() coutM; private: string name; ; class Child:public Mother,public Father public: Child(string s1,string s2,string s3,int a):Father(s1),Mother(s2),name(s3),age(a) Child() coutC; private: string name; int age; ; int main() Child son(“Zhang“,“Li“,“Ming“,20); return 0; 运行时的输出结果是(分数:2.00)A.CB.CMFC.CF
10、M D.20CMF解析:解析:执行派生类构造函数的顺序是: 1、调用基类构造函数,2、调用子对象构造函数,3、再执行派生类析构函数,4、执行基类的析构函数。所以本题中执行析构函数为派生类的析构函数、Father 的析构函数、Mother 的析构函数,所以输出 CFM,答案 C 正确。36.有如下程序: #include #include using namespace std; class Animal public: virtual string GetType() const return “Animal“; virtual string GetVoice() const return “
11、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) cout“ speak “; Speak(d); cout“ - “; Cat c; Type(c
12、); cout“ speak “; Speak(c); coutA.Dog speak Voice - Cat speak VoiceB.Dog speak Woof - Cat speak MiaowC.Animal speak Voice - Animal speak Voice D.Animal speak Woof - Animal speak Miaow解析:解析:本题考查虚函数的运用,本题中定义 Dog d; Type(d)时,执行基类的 Type 函数,输出Animal,然后输出 speak,然后执行基类的 Speak 函数输出 Voice,最后输出-,同理 cat 输出类似,所
13、以结果为 C 选项正确。37.下列关于模板的表述中,错误的是(分数:2.00)A.类模板的成员函数都是模板函数B.函数模板是一种参数化类型的函数C.满足一定条件时可以省略模板实参D.模板形参只能由关键字 typename 声明 解析:解析:模板形参由关键字 typename 或者 class 声明,所以 D 选项错误。38.已知主函数中通过如下语句序列实现对函数模板 swap 的调用: int a10, b10; swap(a,b,10);下列对函数模板 swap 的声明中,会导致上述语句序列发生编译错误的是(分数:2.00)A.template void swap(T a, T b, int
14、 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);解析:解析:本题中使用模板 swap(a,b,10)时,第一个和第二个参数为数组,第三个参数为整型变量,而 B 选项第一参数为整型变量与调用的时候不符合,所以 B 选项错误。39.要利用 C+ 流进行文件操作,必须在程序中包含的头文件是(分数:2.00)A.iostreamB.fstream C.strstreamD.cstdlib解析:解析:本题考查文件流操作时使用需要包含的头文件,属于基础知识,B 选项正确。40.在语句“coutA;“中,cout 是(分数:2.00)A.类名B.对象名 C.函数名D.C+的关键字解析:解析:本题考查提取运算符,cout 为对象名,所以 B 选项正确。