四川大学C++面向对象程序设计模拟试题2

更新时间:2024-04-13 05:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

一、单项选择题

1.说明内联函数的关键字是(A)。

A)inline B)virtual C)define D)static 2.假定CAb为一个类,则执行CAb oX;语句时将自动调用该类的(B)

A)有参构造函数 B)无参构造函数 C)拷贝构造函数 D)赋值重载函数 3.cin是某个类的标准对象的引用,该类是(B)。 A)ostream B)istream C)stdout D)stdin 4.下面的哪个保留字不能作为函数的返回类型?(C)

A)void B)int C)template D)long 5.派生类的成员函数不能访问基类的(C)。

A)保护成员 B)公有成员 C)私有成员 D)前面各选项都正确 6.在语句“cout << data;”中,cout是(C)。

A)C++的关键字 B)类名 C)对象名 D)函数名 7.编译时多态性使用什么获得?(A)

A)重载函数 B)继承 C)虚函数 D)B和C 8.拷贝构造函数的参数通常是(C)。 A)无特殊要求 B. 指向对象的指针 C)本类对象的常引用 D)对象 9.C++有几种联编?(B) A)1种 B)2种 C)3种 D)4种 10.基类和派生类可以分别称为(B)。 A)“大类”和“小类” B)“父类”和“子类” C)“小类”和“大类” D)“子类”和“父类” 二、填空题

1.设函数max是由函数模板实现的,并且max(3.5, 5)和max(3, 5)都是正确的函数调用,则此函数模板具有(2)个类型参数。

2.在C++中,函数重载与虚函数帮助实现了类的(多态)性。 3.由static修饰的数据成员为该类的所有对象(共享)。

4.重载函数一般在参数类型或参数个数上不同,但(函数名)相同。

5.使用new建立的动态对象在不用时应该用(delete)释放所占用的空间。

三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。 1.阅读下面程序,写出输出结果。 #include using namespace std;

class Point {

public: Point(int a = 0, int b = 0):x(a), y(b) {} int GetX() const { return x; } int GetY() const { return y; } void SetX(int a) { x = a; } void SetY(int a) { y = a; }

private: int x; int y; };

int main() { Point u; const Point v(6, 8); cout << u.GetX() << endl; u.SetX(16); cout << u.GetX() << endl; u.SetY(18); cout << u.GetY() << endl; cout << v.GetX() << endl; cout << v.GetY() << endl; return 0; }

上面程序的输出结果为:0 16 18 6 8

2.阅读下面程序,写出输出结果。 #include using namespace std;

template class Test {

public: Test(Type a[], int iSize):elem(a) { size = iSize; } void Print() const { for (int i = 0; i < size; i++) cout << elem[i] << \

private:

\ Type *elem; int size; };

int main() { int a[] = {1, 0, 8}; double b[] = {1.6, 1.8}; Test ar1(a, 3); ar1.Print(); Test ar2(b, sizeof(b) / sizeof(double)); ar2.Print(); cout << endl; return 0; }

上面程序的输出结果为:1 0 8 1.6 1.8

3.阅读下面程序,写出输出结果。 #include using namespace std;

class Goods {

public: Goods(int w): weight(w) { totalWeight = totalWeight + w; } Goods(const Goods &g) { weight = g.weight; totalWeight = totalWeight + weight; } ~Goods() { totalWeight = totalWeight - weight; } void Print() const; static int GetTotalWeight() { return totalWeight; }

private: int weight; static int totalWeight; };

int Goods::totalWeight = 0;

void Goods::Print() const { cout << this->weight << \ \ \}

int main() { Goods g1(6); g1.Print(); Goods g2(g1); g2.Print(); cout << Goods::GetTotalWeight(); cout << endl; return 0; }

上面程序的输出结果为:6 6 6 12 12

4.阅读下面程序,写出输出结果。 #include using namespace std;

template class Test {

public: Test(Type a = 0, Type b = 0, Type c = 0):z(c) { void Print() { cout << x << endl; cout << y << endl; } void Print() const { cout << z << endl; }

private: Type x, y; const Type z;

x = a; y = b; } };

int main() { Test t1; t1.Print(); Test t2(1, 9, 6); t2.Print(); const Test t3(0, 6, 1.8); t3.Print(); return 0; }

上面程序的输出结果为:0 0 1 9 1.8

5.阅读下面程序,写出输出结果。 #include using namespace std;

template

Type Max(const Type &a, const Type &b) { if (a < b) return b; else return a; }

template

Type Min(const Type &a, const Type &b) { if (a < b) return a; else return b; }

int main() { double x = 5.38, y = 6.09; cout << Max(x, y) << \ cout << Min(x, y) << \ return 0; }

上面程序的输出结果为:6.09 6 5.38 5

6.阅读下面程序,写出输出结果。 #include using namespace std;

class A {

public: A() { cout << \ ~A() { cout << \ };

class B: public A {

public: B() { cout << \ ~B() { cout << \ };

int main(void) { B obj; return 0; }

上面程序的输出结果为:A B ~B ~A

四、完成程序填题(本大题共4个小题,每小题3分,共12分)下面程序都留有空白,请将程序补充完整。

1.将如下程序补充完整。 #include using namespace std;

class A {

private: int n;

public: A(int n) { [1] this->n或A::n = n; } // 将数据成员n初始化为形参n void Show() const { cout << n << endl; } };

int main() { A i = 8; i.Show(); return 0; }

2.将如下程序补充完整。

#include using namespace std;

class A {

private: int a;

public: A(int m): a(m) {} void Show() const { cout << a << endl; } };

class B: A {

public: B(int m): [2] A(m) {} void Show() const { A::Show(); } };

int main() { B obj(8); obj.Show(); return 0; }

3.将如下程序补充完整。

#include using namespace std;

class Test

// 将数据成员a初始化为m

{

private: static int num;

public: Test() { num++; } ~Test() { num--; } static void ShowObjectNum() { cout << num << endl; } };

[3] int Test::num = 0; // 静态数据成员的初始化为0

int main(void) { Test::ShowObjectNum(); Test obj; Test::ShowObjectNum(); return 0; }

4.将如下程序补充完整。 #include using namespace std;

class Integer {

private: int i;

public: Integer(int x = 0): i(x) { } [4] operator int() { return i; }// 类类型转换函数,将类Integer转换为基本类型int };

int main() { Integer a, b(18) ; cout << a << endl; cout << int(b) << endl; return 0;

}

五、编程题(本大题共2小题,第1小题12分,第2小题16分,共28分)

1.编写一个函数模板,用于求数组中各元素之和,并编写测试程序进行测试。 函数模板声明如下: template Type Sum(Type a[], int n);

参考程序:

#include using namespace std; template Type Sum(Type a[], int n) { Type tSum = 0; for (int i = 0; i < n; i++) { tSum = tSum + a[i]; } return tSum; }

int main() { int a[] = {1, 2, 3}; double b[] = {1.5, 2.8, 8.9, 8}; cout << Sum(a, 3) << endl; cout << Sum(b, 4) << endl; return 0; }

2.定义一个抽象类Shape,它有一个纯虚函数GetPerimeter();派生出四边型类Rectangle和圆类Circle,在派生类中重载函数GetPerimeter(),用于求图形的周长,编写测试程序进行测试。

参考程序:

#include using namespace std; class Shape {

public: virtual double GetPerimeter() const = 0; };

class Rectangle:public Shape {

public: Rectangle(double w, double h) { width = w; height = h; } double GetPerimeter() const { return 2 * (width + height); } private: double width, height; };

class Circle:public Shape {

public: Circle(double r) { radius = r; } double GetPerimeter() const { return 3.1415926 * radius * radius; }

private: double radius; };

int main() { Rectangle oRectangle(2, 3); cout << oRectangle.GetPerimeter() << endl; Circle oCircle(10); cout << oCircle.GetPerimeter() << endl; return 0; }

本文来源:https://www.bwwdw.com/article/930p.html

Top