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

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

答案:D

3.4 已知:P是一个指向类A数据成员m的指针,a 是类A的一个对象,在给m赋值为5的下列表达式中, 是正确的。

A. a.p = 5 答案:B

3.5 在C++中,使用关键字 来说明虚函数。

A. virtual 答案:A

3.6 假设类AB用成员函数的方式重载加法运算符,以实现两个AB类对象的加法,并返回相加的结果,则该成员函数的声明为 。

A. AB operator + (AB &a, AB &B); C. operator + (AB a); 答案:B

3.7 对定义重载函数的下列要求中, 是错误的。

A. 要求参数的个数不同

B. 要求参数中至少有一个类型不同 D. 要求参数的返回值不同

B. AB operator + (AB&); D. AB & operator + ();

B. public

C. protected

D. private

B. a.*p = 5

C. a->p = 5

D. *a.p = 5

C. 要求参数个数相同时,参数类型不同 答案:D

3.8 下列关于C++中类与对象关系的叙述,其中错误的是 。

A. 对象是类的一个实例 B. 一个类只能有一个实例

C. 类与对象的关系和数据类型与变量的关系相似 D. 任何一个对象都属于一个已知的类 答案:B

3.9 下列关于公有继承方式的描述中,错误的是 。

A. 基类的公有成员对其派生类的对象为可见 B. 基类的保护成员对其派生类的对象为可见 C. 基类的公有和保护成员对派生类可见 D. 基类中的私有成员对派生类不可见

答案:B

3.10下列对C++中静态数据成员的描述中,正确的是 。 A. 静态数据成员是类的所有对象共享的数据 B. 类的每个对象都有自己的静态数据成员 C. 类的不同对象有不同的静态数据成员值 D. 静态数据成员不能通过类的对象来调用 答案:A

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

4.1给出下述源程序的运行结果。 #include void main() {

int i = 0, a = 0; while (i <= 20) { for (;;) {

if ((i % 10) == 0) break; else i++; } a += i; i++; }

cout << a << endl; } 答案:30

4.2 给出下述源程序的运行结果并说明该程序的功能。 #include #include void main() {

char a[] = “changuage”, t, m; int i, j, k; k = strlen(a);

for(i = 0; i <= k - 2; i += 2) {

m = i;

for(j = i + 2; j <= k; j += 2) if (a[m] > a[j]) m = j; if(m != i) {

t = a[i]; a[i] = a[m]; a[m] = t; } }

cout << a << endl; }

答案:程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。 运行结果:ahancuegg

4.3给出下述源程序的运行结果。 #include void main() { } 答案:4

4.4 指出下列源程序中的错误及出错原因,并改正之。 #include class Point {

int x, y;

Point() { x = y = 0;}

static int x[] = {5, 4, 3, 2, 1}; int *p = &x[1]; int a = 10, b;

for(int i = 3; i >= 0; i--)

b = (*(p+i) < a) ? *(p+i) : a;

cout << b << endl;

public: };

int Getx() {return x;} int Gety() {return y;}

void setPoint(int i, int j) { x = i, y = j;}

void main() { Point p1, *p2; }

答案:(1) Point() {x=y=0;} 应声明成public(编译错)

(2) p2->setPoint(3, 6); 之前应为p2赋初值(运行错)

p1.setPoint(10, 5); p2->setPoint(3, 6); cout << p1.Getx() << endl;

五.编程题(30分,每题15分)

5.1编写程序统计“char *strSource = \中A的个数。 参考程序:

#include void main( ) {

char *strSource = \ int count = 0; // 计数器

for(int i = 0; strSource[i] != '\\0'; i++) { if(strSource[i] == 'A') count++; }

cout << \的个数是:\}

5.2 在一个程序中,类Person定义了name和age两个数据成员;由类Person派生出类Student和Teacher,其中类Student定义了学号数据,类Teacher定义了职称数据。每个类均有构造函数、析构函数和打印类中数据的函数。给出类Person、Student、Teacher的定义与实现。 参考程序:

#include #include using namespace std; const int length = 100; const int NO_LENGTH = 10; const int TITLE_LENGTH = 50; class Person { protected:

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