发布时间 : 星期三 文章面向对象程序设计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
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) 析构函数定义了参数