面向对象程序设计C++模拟试卷

发布时间 : 星期三 文章面向对象程序设计C++模拟试卷更新完毕开始阅读

面向对象程序设计C++模拟试卷

考试时间:90分钟

一、简答题(10分)

1.1 (3分)C++中的函数调用有哪几种方式?它们有什么区别? 答案:C++中的函数调用有值传递和引用传递两种。(1分)

值传递时,函数体对形参的任何修改都不会影响实参。(1分) 引用传递时,函数体对形参的修改就相当于对实参的修改。(1分)

1.2 (3分)若派生类以private方式从一个基类派生,派生类的对象可以访问基类中的那些成员?派生类的成员函数可以访问基类中的那些成员?

答案:若派生类以private方式从一个基类派生,派生类的对象不能访问基类中的任何成员

(1分);派生类的成员函数可以访问基类中的public和protected成员(2分)。

1.3(4分)什么是引用?它与指针有什么区别?

答案:引用是某个变量或对象的别名。引用不是变量,它不占据内存空间,它本身没有内存

地址。引用只是被引用的变量或对象的替身。(2分)

引用与指针的区别在于应用不是变量,而指针是变量。没有引用的引用,却有指针的引用。(2分)

二、填空题(20分,每空2分)

2.1 C++程序中的数据可以分为两大类,其中 是指在程序执行过程中值不改变的数据; 是程序中用于存储信息的单元,并对应于某个内存空间。 答案:常量、变量

2.2 有如下定义语句“MyClass *p;”则执行“p = new MyClass;”语句时,将自动调用类MyClass的 。执行“delete p;”语句时,自动调用该类的 。 答案:构造函数、析构函数

2.3 C++中函数之间传递参数有 和 两种方式。 答案:值传递,引用传递

2.4 给出下列程序的输出结果: 。

#include #define MIN(x, y) void main() { int i, j, k; i = 10; j = 15; k = 10 * MIN(i, j); cout << k << endl; } 答案:15

2.6 类的访问权限有 、 和 三种。 答案:private,protect,public

(x) < (y) ? (x) : (y)

三、选择题(20分,每题2分)

3.1 在下列选项中,合法的C++变量名是 。 A. long 答案:B

3.2在对字符数组进行初始化, 是正确的。 A. char s1[] = \

B. char s2[3] = \

D. char s4[2][3] = {\

B. _2Test

C. 3Dmax

D. A.dat

C. char s3[][3] = {'a', 'x','y'}; 答案:A

3.3 字符串常量\的字符个数是 。 A. 4

B. 3

C. 2

D.1

答案:B

3.4 下列对C++ main()函数的描述中,正确的是 。 A. main()函数在同一个C++文件中可以有多个 B. main()函数类型必须是void类型 C. main()函数一定有返回值

D. 每个C++程序都必须有一个main()函数 答案:D

3.5已知:int m = 10,下列表示引用的方法中, 是正确的。 A. int &x = m; 答案:A

3.6 下列对C++语言中函数参数默认值的描述中,正确的是 。 A. 函数参数的默认值只能设定一个

B. 一个函数的参数若有多个,则参数默认值的设定可以不连续 C. 函数参数必须设定默认值

D. 在设定参数的默认值之后,该参数后面定义的所有参数都必须设定默认值 答案:D

3.7 下列关于运算符重载的描述中, 是正确的。 A. 运算符重载可改变其优先级 C. 运算符重载可改变其结合性 答案:B

3.8 下列关于类的析构函数的描述中,错误的是 。 A. 类中有且仅有一个析构函数 C. 析构函数没有函数类型 答案:B

3.9 为了使类中的成员能够被类的对象通过成员运算符访问,则应该把成员的访问权限定义为 。

A. public 答案:A

3.10 假设MyClass为一个类,那么下列函数说明中, 是该类的析构函数。

A. void ~MyClass(); C. ~MyClass(void); 答案:D

B. ~MyClass(int n); D. ~MyClass();

B. protected

C. private

D. packaged

B. 析构函数可以有形参

D. 析构函数在对象撤销时被自动执行

B. 运算符重载不改变其语法结构 D. 运算符重载可改变其操作数的个数

B. int &x = 10;

C. int &x;

D. float &x = &m;

四、读程题(20分,每题5分)

4.1 给出下列源程序的输出结果。 #include

void main( ) { int x = 5, y = 2;

cout << !(y == x/2) << \ cout << (y != x%3) << \ cout << (x > 0 && y < 0) << \ cout << (x != y || x >= y) << endl; }

答案:0, 0, 0, 1

4.2 给出下述源程序的运行结果。 #include

void sub(int x, int y, int *z) { *z = y + x; }

void main() { int a, b, c; sub(8, 4, &a); sub(6, a, &b); sub(a, b, &c);

cout << a << \}

答案:12, 18, 30

4.3 指出下列类定义中的错误。 class MyClass {

int i = 0; public:

void MyClass(); ~MyClass(int value); };

答案:(1) 数据成员i在定义进行了初始化

(2) 构造函数定义了返回值 (3) 析构函数定义了参数

联系合同范文客服:xxxxx#qq.com(#替换为@)