首页 养生问答 疾病百科 养生资讯 女性养生 男性养生
您的当前位置:首页正文

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

2023-12-19 来源:华佗健康网
C++面向对象程序设计模拟试题二

一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。

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. new D. long 5.不能参与重载的运算符是( a )。

A. 类 B. 函数 C. 函数模板 D. 运算符 6.由于数据隐藏的需要,静态数据成员通常被说明为( a )。

A. 私有的 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. “子类”和“父类”

二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“√”错误的划上“×”。 1.不可以定义抽象类的对象。 2.内联函数的定义必须出现在第一次调用内联函数之前。 3.模板函数与函数模板的意义完全相同。 4.只有常成员函数才可以操作常对象。 5.引用可以不初始化。 6.使用new运算符创建数组时,可以为该数组指定初始值。

( a ) ( a ) ( b ) ( a ) ( b ) ( b )

三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在

每小题的空格内。错填或不填均无分。

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

2.在C++中,函数重载与虚函数帮助实现了类的( 多态 )性。

3.由static修饰的数据成员为该类的所有对象( 都可访问 )。 4.重载函数在参数类型或参数个数上不同,但( 函数名 )相同。

5.使用new建立的动态对象在不用时必须用( delete )释放所占用的空间。 6.重载运算符“<<”的函数名为( operator<< )。 六、编程题(本大题共2个小题,每小题8分,共16分)

1.编写一个函数模板,用于求数组中各元素之和,并编写测试程序进行测试。 函数模板声明如下: template

Type Sum(Type tArray[], int iSize)

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

C++面向对象程序设计模拟试题二参考答案

一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.A 6.A

2.B 7.A

3.B 8.C

4.C 9.B

5.A 10.B

二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“√”错误的划上“×”。 1.参考答案:√ 2.参考答案:√ 3.参考答案:× 4.参考答案:√ 5.参考答案:× 6.参考答案:×

三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。 1.参考答案:2 2.参考答案:多态 3.参考答案:共享 4.参考答案:函数名 5.参考答案:delete

6.参考答案:operator<<

六、编程题(本大题共2个小题,每小题8分,共16分) 1.参考程序: #include using namespace std;

template

Type Sum(Type tArray[], int iSize) { Type tSum = 0; for (int i = 0; i < iSize; i++) { tSum = tSum + tArray[i]; } return tSum; }

int main(void) { 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.参考程序: #include using namespace std;

class CShape {

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

class CSquare:public CShape {

public: CSquare(double dWidth, double dHeight) { m_dWidth = dWidth;

m_dHeight = dHeight; } double GetLength() const { return 2 * (m_dWidth + m_dHeight); }

private: double m_dWidth, m_dHeight; };

class CCircle:public CShape {

public: CCircle(double dRadius) { m_dRadius = dRadius; } double GetLength() const { return 3.1415926 * m_dRadius * m_dRadius; }

private: double m_dRadius; };

int main(void) { CSquare oSquare(2, 3); cout << oSquare.GetLength() << endl; CCircle oCircle(10); cout << oCircle.GetLength() << endl; return 0; }

因篇幅问题不能全部显示,请点此查看更多更全内容