国家二级(C++)机试模拟试卷229
选择题
1.下面c++标识符中正确的是( )。(A)
A. 一abc
B. 3ab
C. int
D. +ab
解析:C++标识符命名的规则:只能由‘a’-‘z’、‘A’-‘Z’、‘0’-’9’、等字符组成,且数字不能开头,不能与系统保留字冲突。
2.下列关于this指针的描述中,正确的是( )。(D)
A. 类的成员函数都有this指针
B. 类的友元函数都有this指针
C. 任何与类相关的函数都有this指针
D. 类的非静态成员函数都有this指针
解析:this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。另外,全局函数和静态函数都不能使用this指针。所以答案为D。
3.如果进栈序列为A,B,C,D,则可能的出栈序列是( )。(B )
A. C,A,D,B
B. B,D,C,A
C. C,D,A,B
D. 任意顺序
解析:栈的操作原则为后进先出。选项B)中出栈顺序可按“A进,B进,B出,C进,D进,D出,C出,A出”实现。
4.在软件开发中,需求分析阶段可以使用的工具是( )。(B)
A. N-S图
B. DFD图
C. PAD图
D. 程序流程图
解析:在需求分析阶段可以使用的工具有数据流图DFD图,数据字典。DD,判定树与判定表,所以选择B。
5.下列情况中,不会调用拷贝构造函数的是( )。(B)
A. 用一个对象去初始化同一类的另一个新对象时
B. 将类的一个对象赋值给该类的另一个对象时
C. 函数的形参是类的对象,调用函数进行形参和实参结合时
D. 函数的返回值是类的对象,函数执行返回调用时
解析:本题考查复制构造函数,在以下3种情况下使用:①程序中需要新建立一个对象,并用另一个对象对它初始化;②函数的参数为类的对象;③函数的返回值是类的对象。其中B选项是由赋值运算符重载实现的。
6.下面关于函数模板的表述中不正确的是( )。(C)
A. 类模板的成员函数都是模板函数
B. 类模板本身在编译过程中不会产生任何代码
C. 类模板只能有虚拟类型的参数
D. 用类模板定义一个对象时,实参不能省略
解析:类模板本身在编译时是不会产生代码的,只有在其实例化以后才产生代码。定义一个对象时,不能省略其实参。
7.下面叙述错误的是( )。(C)
A. 派生类可以使用private派生
B. 对基类成员的访问必须是无二义性的
C. 基类成员的访问能力在派生类中维持不变
D. 赋值兼容规则也适用于多继承的组合
解析:在建立派生类的时候,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直接作为派生类的公用成员。涉及如何确定基类的成员在派生类中的访问属性问题,不仅要考虑对基类成员所声明的访问属性,还要考虑派生类所声明的对基类的继承方式,根据这两个因素共同决定基类成员在派生类中的访问属性。所以本题选择C)。
8.下面的描述中,正确的是( )。(A)
A. virtual可以用来声明虚函数
B. 含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
C. 即使基类的构造函数没有参数,派生类也必须建立构造函数
D. 静态数据成员可以通过成员初始化列表来初始化
解析:在基类中用virtual声明成员函数为虚函数,所以A是正确的。纯虚函数是在声明虚函数时被“初始化”为0的虚函数。纯虚函数是一种特殊的虚函数,它没有具体的实现。静态数据成员函数只能在类外进行初始化。
9.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。(C)
A. 编译程序
B. 操作系统
C. 教务管理系统
D. 汇编程序
解析:编译软件、操作系统、汇编程序都属于系统软件,只有C教务管理系统才是应用软件。
10.有如下程序:
#include
using namespace std;
class A{
public:
static int a;
void init(){a=1;}
A(int a=2){init();a++;}
};
im A::a=0;
A obj;
int main()
{
cout<<obj.a;
return 0;
}
运行时输出的结果是( )。(B)
A. 0
B. 1
C. 2
D. 3
解析:本题考查构造函数,本题中对类中的a数据成员先是赋值为0,当定义了对象obj时,执行构造函数,将a的值变为了1,所以输出1。
11.有如下类定义:
class AA{
int a;
Public:
AA(int n=0):a(n){}
};
class BB:public AA{
public:
BB(int n)——
};
其中横线处的缺失部分是( )。
B
解析:本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,成员变量默认的访问权限为私有,即a为私有变量。所以本题答案为B。
12.以下( )不属于对象的基本特征。(A)
A. 继承性
B. 封装性
C. 分类性
D. 多态性
解析:对象具有如下特征:
.标识惟一性。指对象是可区分的。
.分类性。指可以将具有相同属性和操作的对象抽象成类。
.多态性。指同一个操作可以是不同对象的行为。
.封装性。从外面看只能看到对象的外部特征,而不知道也无需知道数据的具体结构以及实现操作的算法。
.模块独立性好。对象是面向对象的软件的基本模块,对象内部各种元素彼此结合得很紧密,内聚性强。
13.下列语句中,错误的是( )。(B)
A. const int buffer=-256;
B. const int temp;
C. const double*point;
D. const double*rt=-new double(5.5);
解析:符号常量声明语句的语法格式是:const类型名符号常量=初值表达式,选项B)中未给常变量赋初值,故错误;而选项C)中定义的是一个指向浮点型常量的指针,而不是定义一个浮点型常量,所以可以不赋初值。
14.有如下程序:
#inc
本文档预览:3600字符,共18186字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载