当前位置:首页 > 面向对象程序设计C++模拟试卷
3.7 下列关于对象数组的描述中, 是错误的。
A. 对象数组的下标是从0开始的 B. 对象数组的数组名是一个常量指针 C. 对象数组的每个元素是同一个类的对象 D. 对象数组只能赋初值,而不能被赋值 答案:D
3.8 下列关于私有继承的描述中,错误的是 。
A. 基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问它们
B. 基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员不能直接访问它们
C. 基类的私有成员,派生类的成员和派生类的对象都无法访问 D. 派生类的对象无法访问基类 答案:B
3.9 应在下列程序中的空缺处填入的正确语句是 。
#include
void fun() { cout << \};
class Derived : public Base { void fun() {
; // 显式调用基类的成员函数fun() cout << \ } }; A. fun() 答案:C
3.10 下列关于类模板的描述中,不正确的是 。
A. 用类模板定义一个对象时,不能省略实参 B. 类模板只能有类型参数
B. Base.fun()
C. Base::fun()
D. Base->fun()
C. 类模板本身在编译中不会生成任何代码 D. 类模板的成员函数都是模板函数 答案:B
四.读程题(20分,每题5分)
4.1 给出下述源程序的运行结果。 #include
char *p1, *p2, s[50] = \ p1 = \ p2 = \
strcpy(s+2, strcat(p1+2, p2+1)); cout << s << endl; }
答案:xycdBCD
4.2给出下述源程序的运行结果。 #include
void fun() { cout << \};
class Derived : public Base { public: void fun() {
cout << \ } };
void main() { Derived a; Base *p = &a; (*p).fun(); a.fun();
} 答案:12
4.3 给出下述源程序的运行结果。 #include
int add(int a, int b = 5); void main() { int m = 5;
cout << \
cout << \
cout << \}
int add(int x, int y) { return x + y; } 答案:sum1 = 10 sum2 = 15 sum3 = 20
4.4 给出下述源程序的运行结果。 #include
A(int i, int j) { a = i; b = j; }
void Move(int x, int y) { a += x; b += y; }
void Show() { cout << \};
class B : private A { public:
B(int i, int j, int k, int l) : A(i, j) { x = k; y = l; } void Show() { cout << x << \ void fun() { Move(3,5); } void f1() { A :: Show(); } private: int x, y; };
void main() { A e(1, 2); B d(3, 4, 5, 6); e.Show(); d.fun(); d.Show(); d.f1(); }
答案:(1, 2)
5, 6 (6. 9)
五.编程题(30分,每题15分)
5.1编写一个函数int deleteARR(int a[], int count),其功能是去掉元素个数为count的整型数组a中的重复元素,并将不重复元素的个数作为函数的返回值。 参考程序:
#include
int deleteARR(int a[], int count) {
int k = 0, j = 1; while(j < count) { if(a[k] != a[j]) a[++k] = a[j]; j++; }
return k+1; // 返回数组中不重复元素的个数 }
5.2 设计类Point,包含横、纵两个坐标数据。由类Point派生出类Circle,Circle中包含圆的半径数据,并能够计算圆的面积。给出类Point和Circle的定义与实现。 参考程序:
#include
Point(int a, int b) { x = a; y = b; }
共分享92篇相关文档