面向对象程序设计C++A卷答案.docx

上传人:b****6 文档编号:7761221 上传时间:2023-01-26 格式:DOCX 页数:13 大小:65.34KB
下载 相关 举报
面向对象程序设计C++A卷答案.docx_第1页
第1页 / 共13页
面向对象程序设计C++A卷答案.docx_第2页
第2页 / 共13页
面向对象程序设计C++A卷答案.docx_第3页
第3页 / 共13页
面向对象程序设计C++A卷答案.docx_第4页
第4页 / 共13页
面向对象程序设计C++A卷答案.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

面向对象程序设计C++A卷答案.docx

《面向对象程序设计C++A卷答案.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计C++A卷答案.docx(13页珍藏版)》请在冰豆网上搜索。

面向对象程序设计C++A卷答案.docx

面向对象程序设计C++A卷答案

题号

总分

核分人

得分

得分

评卷人

一、选择题(每题2分,共20分)

1、已知函数f的原型是:

voidf(int*a,long&b);变量v1、v2的定义是:

intv1;longv2;,正确的调用语句是(C)。

A)f(v1,&v2);B)f(v1,v2);C)f(&v1,v2);D)f(&v1,&v2);

2、下列描述中,(C)是错误的。

A)内联函数主要解决程序的运行效率问题

B)内联函数的定义必须出现在内联函数第一次被调用之前

C)内联函数中可以包括各种语句

D)对内联函数不可以进行异常接口声明

3、下列关于类和对象的叙述中,错误的是(A)。

A)一个类只能有一个对象

B)对象是类的具体实例  

C)类是对某一类对象的抽象

D)类和对象的关系是一种数据类型与变量的关系

4、(C)不是构造函数的特征。

A)构造函数的函数名与类名相同   B)构造函数可以重载 

  C)构造函数不可以设置缺省参数   D)构造函数无须指定类型说明

5、友元的作用是(A )。

   

A)提高程序的运用效率   B)加强类的封装性 

C)实现数据的隐藏性   D)增加成员函数的种类

6、下列关于运算符重载的叙述中,正确的是( B   )。

 

  A)通过运算符重载,可以定义新的运算符

  B)有的运算符只能作为成员函数重载

C)若重载运算符+,则相应的运算符函数名是+

D)重载二元运算符时,必须声明两个形参

7、设置虚基类的目的是( B   )。

  

 A)简化程序   B)消除二义性   C)提高运行效率 D)减少目标代码 

8、已知在一个类体中包含如下函数原型:

 Volume operator-(Volume)const;,下列关于这个函数的叙述中,错误的是(  B  )。

 

  A)这是运算符-的重载运算符函数  

B)这个函数所重载的运算符是一个一元运算符

C)这是一个成员函数 

D)这个函数不改变类的任何数据成员的值

9、关于子类型的描述中,(A )是错误的。

A)子类型就是指派生类是基类的子类型; 

B)一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型; 

C)在公有继承下,派生类是基类的子类型; 

D)子类型关系是不可逆的。

10、下列是模板声明的开始部分,其中正确的是(C)。

A)templateB)template

C)templateD)template

得分

评卷人

二、判断题(每题1分,共10分)

1、C++语言引入类主要起两个作用:

数据封装和类型定义。

2、只要是类M继承了类N,就可以说类M是类N的子类型。

×

3、构造函数可以声明为虚函数。

 ×

4、多继承情况下,派生类的构造函数的执行顺序取决于成员初始化列表中的顺序。

× 

5、重载函数必须有不同的参数列表。

 √

6、用new动态分配的内存是在堆中分配的,而不是在栈中分配的。

√  

7、关系运算符可以用来比较两个字符的大小,也可用来比较两个字符串的大小。

×

8、如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。

√ 

9、通过使用不同的类型参数,函数模板可以生成不同类型的函数。

√ 

10、在私有继承中,基类中只有公有成员对派生类是可见的。

×  

得分

评卷人

三、填空题(每题2分,共20分)

1、任何类中允许有三种访问权限的数据,这三种访问权限分别是 public 、private、  protected  ,默认访问权限为private(或私有)。

2、类Sample的构造函数将形参data赋值给数据成员data。

请将类定义补充完整。

class Sample{

public:

 

Sample(int data=0); 

private:

 

int data;

}; 

Sample:

:

Sample(int data){ 

this->data=data;

 }

3、设px是指向一个类动态对象的指针变量,则执行“delete  px”语句时,将自动调用该类的析构函数。

4、当一个函数或一个类希望能够直接访问另一个类中的非公用成员时,应该将该函数或该类声名为另一个类的友元函数或友元类。

5、在MyClass 类的定义中,对赋值运算符=进行重载。

请将画线处缺失的部分补充完整。

 

   MyClass&         MyClass:

:

operator=(const MyClass &rhs) { 

if(this==&rhs) return *this; 

value=rhs.value; 

return  *this;

}

6、设A为test类的对象且赋有初值,则语句test B(A); 表示用已经存在的对象A初始化正在被创建的同类新对象B 。

7、函数重载时要求同名函数的参数类型 或 个数不同,否则无法确定是哪个函数。

8、从实现的角度划分,C++所支持的两种多态性分别是编译时的多态性和运行时的多态性。

实现运行时多态,要使用     虚     函数。

9、带有  纯虚函数      的类称为抽象类,抽象类的特征是不能声明一个抽象类的    对象      ,但可以声明一个抽象类的指针或引用。

10、一个  类模板    允许用户为类定义一种模式,使得类中某些数据成员、某些成员函数的参数和返回值能取任意数据类型。

得分

评卷人

四、程序阅读题(每题5分,共10分)

1、写出执行下面程序的输出结果。

9SS9S

#include

using namespace std;

class A{

int a;

public:

A():

a(9){} 

   virtual void print() const 

{cout<

}; 

class B:

public A{

char b;

public:

 

    B(){b= ‘S’;} 

void print()const

{cout<

}; 

void show(A& X){X.print();}

 int main() { 

A d1,*p;  

B d2;  

p=&d2; 

d1.print(); 

d2.print(); 

 p->print(); 

show(d1);

show(d2);

return 0;

}

2、写出执行下面程序的输出结果。

#include

using namespace std;

classPart{

public:

Part(){cout<<"classPart"<

};

classA

{public:

A(char*s){cout<

~A(){}

};

classB:

virtualpublicA

{public:

B(char*s1,char*s2):

A(s1)

{cout<

};

classC:

virtualpublicA{

public:

C(char*s1,char*s2):

A(s1){cout<

};

classD:

publicC,publicB{

Partp;

public:

D(char*s1,char*s2,char*s3,char*s4):

B(s1,s2),C(s1,s3),A(s1)

{cout<

};

intmain()

{

D*p=newD("classA","classB","classC","classD");

deletep;

return0;

}

结果:

classA

classC

classB

classPart

classD

 

得分

评卷人

五、程序改错题(每个错误2分,共10分)

有一个源程序文件proj.cpp,其中编号为①、②、③、④、⑤的语句有错误,请修改这些错误。

源程序文件proj.cpp清单如下:

#include

usingnamespacestd;

#include

classCBook{

private:

char*p_book;

public:

voidCBook(constchar*p_val)-----------①去掉void

{

p_book=newchar[strlen(p_val)+1];

strcpy(p_book,p_val);

}

voidprint()const;

~CBook(){deletep_book[];}-----------②去掉[]

};

intmain(){

charbook_title[60];

CBook*p_book_obj;

cout<<"Enterbooktitle:

";

cin>>book_title;

CBookabook;--------------③改成CBookabook(book_title);

p_book_obj=&abook;

p_book_obj.print();-----------④改成p_book_obj-〉print();

return0;

}

voidprint()const-----------⑤改成voidCBook:

:

print()const

{cout<

得分

评卷人

六、程序设计题(共30分)

1、(15分)编写一个实现两个数交换的函数模板swap,然后使用该函数模板再编写一个对具有n个数组元素(通用类型)的数组采用冒泡排序算法进行排序的函数模板。

2、(15分)编写一个程序计算“三角形(triangle)、正方形(square)、圆形(circle)”三种图形的面积,要求:

(1)抽象出一个基类Base,在其中说明一个虚函数用来求面积;

(2)利用派生类定义三角形、正方形、圆形;

(3)编写主函数并测试。

1、#include

usingnamespacestd;

template

voidswap(T&a,T&b){

Ttemp;

temp=a;a=b;b=temp;

}

template

voidbubbleSort(Ta[],intn)

{inti,j;

for(i=1;i

for(j=0;j

if(a[j]>a[j+1])swap(a[j],a[j+1]);

}

template

voidprint(T1a[],intn){

for(inti=0;i

}

intmain(){

inta[]={2,3,1,6,43,22};

doubleb[]={2.3,3.2,1.6,-6.0,4.3,2.2};

print(a,6);

bubbleSort(a,6);

print(a,6);

print(b,6);

bubbleSort(b,6);

print(b,6);

return0;

}

2、class Base { 

public:

  double area(double s=0); 

};  

class Triangle:

public base  { 

double D,H;  

public:

   

Triangle (double d=0,double h=0)   {    D=d;    H=h;   }

double area()   {    double s;     s=(D*H)/2;    return s;   }   

void display()   {    

cout<<"三角形的底和高:

"<

cout<<"三角形的面积:

"<

  } 

}; 

class Square:

public base { 

double L;   

public:

    

Square(double l=0)    {     L=l;    }    

double area()    {     double s;   s=L*L;     return s;    } 

    void display()    {  

cout<<"正方形的边长为:

"<

cout<<"正方形的面积为:

"<

  };   

 class Circle:

public base {

double R;    

public:

 

Circle(double r=0)     {      R=r;     }

double area()     {      double s;          s=3.14*R*R;      return s;     } 

         void display()     {    

cout<<"圆的半径:

"<

cout<<"圆形的面积为:

"<

};

intmain(){

Shape*p=NULL;

Trianglet(3,4,5);

Squares

(2);

Circlec(3);

p=&t;

cout<<"三角形的面积为:

"<area()<

p=&s;

cout<<"正方形的面积为:

"<area()<

p=&c;

cout<<"圆的面积为:

"<area()<

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1