欢迎来到夜的世界

莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生.料峭春风吹酒醒,微冷,山头斜照却相迎。回首向来萧瑟处,归去,也无风雨也无晴。
扩大
缩小

面向对象程序设计

 

 

1.  (问答题) 编程8.某学校对教师每月工资的计算公式如下:固定工资+课时补贴。教授的固定工资为5000元,每个课时补贴50元;副教授的固定工资为3000元,每个课时补贴30元;讲师的固定工资为2000元,每个课时补贴20元。定义教师抽象类,派生不同职称的教师类,编写程序求若干教师的月工资。(10分)(本题12.5分)

我的答案:
1
标准答案:
#include<iostream>

using namespace std;

class Teacher{                             (2分)

protected:

double salary;

int workhours;

public:

Teacher(int wh=0){workhours=wh;}

virtual void cal_salary()=0;

void print(){cout<<salary<<endl;}

};

class Prof:public Teacher{                    (2分)

public:

Prof(int wh=0):Teacher(wh){}

void cal_salary(){

salary=workhours*50+5000;

}

};

class Vice_Prof:public Teacher{                (2分)

public:

Vice_Prof(int wh=0):Teacher(wh){}

void cal_salary(){

salary=workhours*30+3000;

}

};

class Lecture:public Teacher{                 (2分)

public:

Lecture(int wh=0):Teacher(wh){}

void cal_salary(){

salary=workhours*20+2000;

}

};

int main(){                             (2分)

Teacher *pt;

Prof prof(200);

pt=&prof;

pt->cal_salary();

prof.print();

Vice_Prof vice_prof(250);

pt=&vice_prof;

pt->cal_salary();

vice_prof.print();

Lecture lecture(100);

pt=&lecture;

pt->cal_salary();

lecture.print ();

return 0;

}

 

 

解析:
 
得分: 0
点评:
 

2.  (问答题) 编程7.有一个交通工具类vehicle,将它作为基类派生小车类car、卡车类truck和轮船类boat,定义这些类并定义一个虚函数用来显示各类信息。(10分)(本题12.5分)

我的答案:
1
标准答案:
#include

 

#include

using namespace std;

class Vehicle{

public:

 

virtual void showinfo()=0;     (2分)

protected: 

char Name[20];

};

 

class Car:public Vehicle{

public:

Car(char *name){

strcpy(Name,name);

}

void showinfo(){cout<<Name<<endl;}    (2分)

protected:

int Radius;

};

 

class Truck:public Vehicle{

public:

Truck(char *name){

strcpy(Name,name);

}

void showinfo(){cout<<Name<<endl;}    (2分)

};

class Boat:public Vehicle{

public:

Boat(char *name){

strcpy(Name,name);

}

void showinfo(){cout<<Name<<endl;}    (2分)

};

 

int main(){                              (2分)

Vehicle *vp;

Car car("奔驰");

Truck truck("运输卡车");

Boat boat("游艇");

vp=&car;

vp->showinfo ();

vp=&truck;

vp->showinfo ();

vp=&boat;

vp->showinfo ();

return 0;

}

 

解析:
 
得分: 0
点评:
 

3.  (问答题) 编程6.定义猫科动物Animal类,由其派生出猫类(Cat)和豹类(Leopard),二者都包含虚函数 sound( ),要求根据派生类对象的不同调用各自重载后的成员函数。(10分)(本题12.5分)

我的答案:
1
标准答案:
#include

 

#include

using namespace std;

class Animal{

public:

virtual void Speak()=0;    (3分)

};

class Cat :public Animal{

void Speak(){

cout<<"My name is Cat"<<endl;    (2分)

}

};

class Leopard:public Animal{

void Speak(){

cout<<"My name is Leopard"<<endl;    (2分)

}

};

int main(){                            (3分)

Animal *pa;

Cat cat;

pa=&cat;

pa->Speak();

Leopard leopard;

pa=&leopard;

pa->Speak();

return 0;

}

 

解析:
 
得分: 0
点评:
 

4.  (问答题) 编程5.定义一个shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area( )。(10分)(本题12.5分)

我的答案:
1
标准答案:
#include

 

#include

using namespace std;

class Shape{

public:

virtual void Area()=0;          (2分)

};

 

class Rectangle:public Shape{

public:

Rectangle(double w,double h){        (1分)

width=w,height=h;

}

void Area(){cout<<width*height<<endl;}    (2分)

protected:

double width,height;

};

 

class Circle:public Shape{

public:

Circle(double r){                 (1分)

radius=r;

}

void Area(){cout<<3.1415*radius*radius<<endl;}    (2分)

protected:

double radius;

};

 

int main(){                        (2分)

Shape *sp;

Rectangle re1(10,6);

Circle cir1(4.0);

sp=&re1;

sp->Area ();

sp=&cir1;

sp->Area ();

return 0;

}

 

解析:
 
得分: 0.4
点评:
 

5.  (问答题) 编程4.设计一个建筑物类Building,由它派生出教学楼Teach-Building和宿舍楼类Dorm-Building,前者包括教学楼编号、层数、教室数、总面积等基本信息,后者包括宿舍楼编号、层数、宿舍数、总面积和容纳学生总人数等基本信息。(10分)(本题12.5分)

我的答案:
1
标准答案:
#include

 

#include

using namespace std;

enum AMPM{AM=1,PM};

class Building{                                (1分)

public: 

Building(char *);

void ShowBuilding(){

cout<<Name;

}

protected: 

char Name[30];

};

Building::Building(char *name){                  (1分)

strcpy(Name,name);

};

 

class Teach_Building: public Building {              (1分)

public: 

Teach_Building(char *,int,int,int,int);

void ShowTeach_Building(){

Building::ShowBuilding();

cout<<" No:"<<No;

cout<<" Floors:"<<Floors;

cout<<" ClassRooms:"<<ClassRooms;

cout<<" Area:"<<Area<<endl;

}

protected:

int No,Floors,ClassRooms,Area;

};

Teach_Building::Teach_Building(char *name,int no,int fl,int cr,int ar):Building(name){  (1分)

No=no;Floors=fl;ClassRooms=cr;Area=ar;

}

class Dorm_Building:public Building {               (2分)

public:

Dorm_Building(char *,int,int,int,int,int);

void ShowDorm_Building(){

Building::ShowBuilding();

cout<<" No:"<<No;

cout<<" Floors:"<<Floors;

cout<<" DormRooms:"<<DormRooms;

cout<<" Area:"<<Area;

cout<<" StudentNum:"<<StudentNum<<endl;

}

protected:

int No,Floors,DormRooms,Area,StudentNum;

};

Dorm_Building::Dorm_Building(char *name,int no,int fl,int dr,int ar,int sn):Building(name){

No=no;Floors=fl;DormRooms=dr;Area=ar;StudentNum=sn;            (2分)

}

 

int main(){                                                       (2分)

Teach_Building tb("主教学楼",59,6,66,18000);

Dorm_Building db("北苑男生宿舍",41,5,75,3750,300);

tb.ShowTeach_Building();

db.ShowDorm_Building();

return 0;

}

 

解析:
 
得分: 0.2
点评:
 

6.  (问答题) 编程3.设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。小车类car是它的派生类,其中包含载人数passenger_load。每个类都有相关数据的输出方法。在主程序中定义一个car类对象,对其车轮个数、车重、载人数进行设置并显示。(10分)(本题12.5分)

我的答案:
1
标准答案:
#include 

class vehicle // 定义汽车类 (3分)

protected: 

int wheels; // 车轮数 

float weight; // 重量 

public: 

vehicle(int wheels,float weight); 

int get_wheels(); 

float get_weight(); 

float wheel_load(); 

void show(); 

}; 

class car:public vehicle // 定义小车类 (3分)

int passenger_load; // 载人数 

public: 

car(int wheels,float weight,int passengers=4); 

int get_passengers(); 

void show(); 

}; 

vehicle::vehicle(int wheels1,float weight1)  //(1分)

wheels=wheels1; 

weight=weight1; 

int vehicle::get_wheels() 

return wheels; 

float vehicle::get_weight() 

return weight; 

void vehicle::show()  (1分)

cout << "车轮:" << wheels << "个" << endl; 

cout << "重量:" << weight << "公斤" << endl; 

car::car(int wheels, float weight, 

int passengers) :vehicle(wheels, weight) 

passenger_load=passengers; 

int car::get_passengers () 

return passenger_load; 

void car::show() 

cout <<" 车型:小车" << endl; 

vehicle::show(); 

cout << "载人:" << passenger_load << "人" << endl; 

cout << endl; 

void main () 

car car1(4,2000,5);  (1分)

cout << "输出结果" << endl; 

car1. show (); (1分)

}

 

解析:
 
得分: 0.2
点评:
 

7.  (问答题) 编程2.定义一boat与car两个类,二者都有weight属性,定义二者的一个友元函数totalweight(),计算二者的重量和。(10分)(本题12.5分)

我的答案:
1
标准答案:
#include

 

class car;(1分)

class boat{  

private:

int weight;  //(1分)

public:

boat(int w):weight(w){}  //(1分)

friend int totalweight(boat b1,car c1);  //(2分)

};

class car{  /(1分)

private:

int weight; (1分)

public:

car(int w):weight(w){};

friend int totalweight(boat b1,car c1); (1分)

};

int totalweight(boat b1,car c1)  //(1分)

{

return b1.weight+c1.weight;

}

void main()

{

car c1(1000);

boat b1(2000);

cout<<totalweight(b1,c1)<<endl;(1分)

}

 

解析:
 
得分: 0.5
点评:
 

8.  (问答题) 编程1.测试一个名为rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。(10分)(本题12.5分)

我的答案:
1
标准答案:
#include

 

#include

class rectangle  //(2分)

{

private:

int x1,y1,x2,y2; // (2分)

public:

rectangle(int xx1,int yy1,int xx2,int yy2) //(1分)

{

x1=xx1;y1=yy1;x2=xx2;y2=yy2;

}

int getarea()   //(2分)

{

return abs((x2-x1)*(y1-y2));

}

};

void main()

{

rectangle rect1(3,7,8,5); (2分)

cout<<rect1.getarea()<<endl; (1分)

}

 

解析:
 
得分: 0.7
点评:
 

9.  (填空题) 程序填空15. #include<iostream.h>

    #include<stdlib.h>

    class A {

      int *a; int n; int MaxLen;

    public:

      A(): a(0), n(0), MaxLen(0) {}

      A(int *aa, int nn, int MM) {

        n=nn;

        MaxLen=MM;

        if(n>MaxLen) exit(1);

        ___(1)_);  //由a指向长度为MaxLen的动态数组

        for(int i=0; i<n; i++) a[i]=aa[i];

      }  

      ~A() {delete []a;}

      int GetValue(int i) ___(2)_ //函数体返回a[i]的值

    };

    void main()

    {

        int b[10]={1,2,3,4,5,6,7,8,9,10};

    A r(b,10,10);

        int i,s=0;

        for(i=0; i<10; i++); ___(3)_ //r对象的a数据成员中的每个

                                       //元素值依次累加到s

        cout<<"s="<<s<<endl;

    }

 

(1)                    (2)                      (3)

 

(本题0.0分)

我的答案: (1)
1
(2)
1
(3)
1
标准答案:
(1)
a=new int[MaxLen]

 

 

(2)
{return a[i];}

 

(3)
 s+=r.GetValue(i)

 


 

1.  (填空题) 填空40. 在定义一个派生类时,使用__________关键字或者不显式地使用它则表示为__________继承。  

 

(本题2.5分)

我的答案: (1)
1
(2)
1
标准答案:
(1)
private

 

(2)
私有
解析:
 
得分: 0
点评:
 

2.  (填空题) 填空39. 当保护继承时,基类的_______成员在派生类中成为保护成员,派生类对象不能直接访问基类的____成员。(本题2.5分)

我的答案: (1)
1
(2)
1
标准答案:
(1)
公有和保护

 

(2)
任何
解析:
 
得分: 0
点评:
 

3.  (填空题) 填空38. 派生类的成员函数可以直接访问基类的______ 成员,不能直接访问基类的  ______成员。(本题2.5分)

我的答案: (1)
1
(2)
1
标准答案:
(1)
公有和保护

 

(2)
私有

 

解析:
 
得分: 0
点评:
 

4.  (填空题) 填空37. 在一个或若干个类的基础上构造一个新类,被称为___________。(本题2.5分)

我的答案:
1
标准答案:
继承(或派生)

 

解析:
 
得分: 0
点评:
 

5.  (填空题) 填空36. 一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明必须在函数名前加上______的限定。(本题2.5分)

我的答案:
1
标准答案:
类域

 

解析:
 
得分: 0
点评:
 

6.  (填空题) 填空35. 静态数据成员必须在所有函数的定义体外进行__________。(本题2.5分)

我的答案:
1
标准答案:
初始化

 

解析:
 
得分: 0
点评:
 

7.  (填空题) 填空34. 静态成员函数    ____访问类的静态数据成员, ____   访问类的非静态数据成员。 (本题2.5分)

我的答案: (1)
1
(2)
1
标准答案:
(1)
只能

 

(2)
不能
解析:
 
得分: 0
点评:
 

8.  (填空题) 填空33.假定AB为一个类,该类中含有一个指向动态数组空间的指针成员pa,则在该类的析构函数中应该包含有一条______________语句。(本题2.5分)

我的答案:
1
标准答案:
delete []pa;

 

解析:
 
得分: 0
点评:
 

9.  (填空题) 填空32.在每个成员函数中,隐含的第一个参数的参数名为________。(本题2.5分)

我的答案:
1
标准答案:
this

 

解析:
 
得分: 0
点评:
 

10.  (填空题) 填空31.假定用户为类AB定义了一个构造函数“AB(int aa) {a=aa;}”,则系统(会/不会)_________为该类自动定义一个无参构造函数"AB() {}"。(本题2.5分)

我的答案:
1
标准答案:
不会

 

解析:
 
得分: 0
点评:
 

11.  (填空题) 填空30.假定指针p指向一个动态分配的类对象,则当执行“delete p;”语句时,在释放p所指向的动态存储空间之前将自动调用该类的____________。(本题2.5分)

我的答案:
1
标准答案:
析构函数

 

解析:
 
得分: 0
点评:
 

12.  (填空题) 填空29.假定一个类对象数组为A[N],当离开它的作用域时,系统自动调用该类析构函数的次数为________。(本题2.5分)

我的答案:
1
标准答案:
N
解析:
 
得分: 0
点评:
 

13.  (填空题) 填空28. 假定 AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类构造函数的次数为________。(本题2.5分)

我的答案:
1
标准答案:
10 

 

解析:
 
得分: 0
点评:
 

14.  (填空题) 填空27.为了释放类对象中指针成员所指向的动态存储空间,则需要为该类定义____________。(本题2.5分)

我的答案:
1
标准答案:
析构函数

 

解析:
 
得分: 0
点评:
 

15.  (填空题) 填空26.在一个类中定义拷贝构造函数的目的,是为了当利用该类的一个对象初始化另一个对象时,能够避免这两个对象的同一指针同时指向同一块__________________。(本题2.5分)

我的答案:
1
标准答案:
动态存储空间

 

解析:
 
得分: 0
点评:
 

16.  (填空题) 填空25.定义类动态对象数组时,其元素只能靠自动调用该类的____________来进行初始化。(本题2.5分)

我的答案:
1
标准答案:
无参构造函数

 

解析:
 
得分: 0
点评:
 

17.  (填空题) 填空24.当用户为一个类定义有____________时,则系统不会为该类再自动生成一个默认构造函数。(本题2.5分)

我的答案:
1
标准答案:
构造函数

 

解析:
 
得分: 0
点评:
 

18.  (填空题) 填空23.一个类的__________函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。(本题2.5分)

我的答案:
1
标准答案:
析构

 

 

解析:
 
得分: 0
点评:
 

19.  (填空题) 填空22.一个类的__________函数实现对该类对象的初始化功能。(本题2.5分)

我的答案:
1
标准答案:
构造

 

 

解析:
 
得分: 0
点评:
 

20.  (填空题) 填空21.假定AA是一个类,“AA* abc()const;”是该类中一个成员函数的原型,在该函数体中(能够/不能够)__________向*this或其成员赋值。(本题2.5分)

我的答案:
1
标准答案:
不能够

 

 

解析:
 
得分: 0
点评:
 

21.  (填空题) 填空20. 若采用x.abc(y)表达式调用一个成员函数,在成员函数中使用的________就代表了类外的x对象。 (本题2.5分)

我的答案:
1
标准答案:
*this

 

 

解析:
 
得分: 0
点评:
 

22.  (填空题) 填空19. 若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后面加上________关键字。(本题2.5分)

我的答案:
1
标准答案:
const

 

 

解析:
 
得分: 0
点评:
 

23.  (填空题) 填空18. 为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上________关键字。(本题2.5分)

我的答案:
1
标准答案:
const

 

 

解析:
 
得分: 0
点评:
 

24.  (填空题) 填空17. 若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上________和两个冒号分隔符。(本题2.5分)

我的答案:
1
标准答案:
类名

 

解析:
 
得分: 0
点评:
 

25.  (填空题) 填空16. 为了使类中的成员不能被类外的函数通过成员操作符访问,则应把该成员的访问权限定义为________。 (本题2.5分)

我的答案:
1
标准答案:
private(或私有) 

 

解析:
 
得分: 0
点评:
 

26.  (填空题) 填空15. 对于类中定义的任何成员,其隐含访问权限为________。(本题2.5分)

我的答案:
1
标准答案:
private(或私有)

 

解析:
 
得分: 0
点评:
 

27.  (填空题) 填空14. 类中的供外部调用定义的函数成员,其访问属性通常被定义为________。(本题2.5分)

我的答案:
1
标准答案:
public(或公有)

 

解析:
 
得分: 0
点评:
 

28.  (填空题) 填空13. 类中的数据成员的访问属性通常被指明为________。(本题2.5分)

我的答案:
1
标准答案:
 private(或私有)

 

解析:
 
得分: 0
点评:
 

29.  (填空题) 填空12. 类定义中,既包含数据成员,也包含________成员。(本题2.5分)

我的答案:
1
标准答案:
函数

 

解析:
 
得分: 0
点评:
 

30.  (填空题) 填空11. 如果一个派生类只有一个唯一的基类,则这样的继承关系称为__________。(本题2.5分)

我的答案:
1
标准答案:
单继承

 

解析:
 
得分: 0
点评:
 

31.  (填空题) 填空10. 如果一个派生类的基类不止一个,则这种继承称为____________。 (本题2.5分)

我的答案:
1
标准答案:
多继承(或多重继承)

 

解析:
 
得分: 0
点评:
 

32.  (填空题) 填空9. 特殊类的对象拥有其一般类的全部属性与操作,称特殊类________了一般类。(本题2.5分)

我的答案:
1
标准答案:
继承

 

解析:
 
得分: 0
点评:
 

33.  (填空题) 填空8. 对象是对问题域中客观事物的________,它是一组属性和在这些属性上操作的__________。

 

(本题2.5分)

我的答案: (1)
1
(2)
1
标准答案:
(1)
抽象

 

(2)
封装体
解析:
 
得分: 0
点评:
 

34.  (填空题) 填空7. 复杂对象可以由简单对象构成,这种现象称为__________。(本题2.5分)

我的答案:
1
标准答案:
组合(或聚合)

 

解析:
 
得分: 0
点评:
 

35.  (填空题) 填空6. 基类和派生类的关系称为__________。(本题2.5分)

我的答案:
1
标准答案:
继承

 

解析:
 
得分: 0
点评:
 

36.  (填空题) 填空5. 对象将其大部分实现细节隐藏起来,这种机制称为__________。(本题2.5分)

我的答案:
1
标准答案:
封装

 

解析:
 
得分: 0
点评:
 

37.  (填空题) 填空4. 每个对象都是所属类的一个__________。(本题2.5分)

我的答案:
1
标准答案:
实例

 

解析:
 
得分: 0
点评:
 

38.  (填空题) 填空3. 以面向对象方法构造的系统,其基本单位是__________。(本题2.5分)

我的答案:
1
标准答案:
对象

 

解析:
 
得分: 0
点评:
 

39.  (填空题) 填空2. 已知语句“cout<<p;”的输出是“Hello!”,则语句“cout<<*p;”输出的是__________。(本题2.5分)

我的答案:
1
标准答案:
H

 

解析:
 
得分: 0
点评:
 

40.  (填空题) 填空1. 重载一个函数的条件是:该函数必须在参数的个数或参数的__________上与其它同名函数有所不同。(本题2.5分)

我的答案:
1
标准答案:
类型

 

 

 

 

1.  (填空题)

 

程序填空16一个类定义如下:

class Goods

{

  private:

    char gd_name[20];           //商品名称

    int weight;                 //商品重量

    static int totalweight;     //同类商品总重量

  public:

Goods(char*str,int w){     //构造函数

    strcpy(gd_name,str);

    weight=w;

    totalweight+=weight;

}

    ~ Goods(){totalweight -= weight;} 

    char* GetN(){_(1)_;}  //返回商品名称

    int GetW(){return weight;}

_(2)_ GetTotal_Weight() {  //定义静态成员函数返回总重量

    _(3)_;

}

}

 

(1)                     (2)                    (3) 

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
标准答案:
(1)
return gd_name

 

(2)
static int

 

(3)
return totalweight

 

解析:
 
得分:
点评:
 

2.  (填空题) 程序填空15. #include<iostream.h>

    #include<stdlib.h>

    class A {

      int *a; int n; int MaxLen;

    public:

      A(): a(0), n(0), MaxLen(0) {}

      A(int *aa, int nn, int MM) {

        n=nn;

        MaxLen=MM;

        if(n>MaxLen) exit(1);

        ___(1)_);  //由a指向长度为MaxLen的动态数组

        for(int i=0; i<n; i++) a[i]=aa[i];

      }  

      ~A() {delete []a;}

      int GetValue(int i) ___(2)_ //函数体返回a[i]的值

    };

    void main()

    {

        int b[10]={1,2,3,4,5,6,7,8,9,10};

    A r(b,10,10);

        int i,s=0;

        for(i=0; i<10; i++); ___(3)_ //r对象的a数据成员中的每个

                                       //元素值依次累加到s

        cout<<"s="<<s<<endl;

    }

 

(1)                    (2)                      (3)

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
标准答案:
(1)
a=new int[MaxLen]

 

 

(2)
{return a[i];}

 

(3)
 s+=r.GetValue(i)

 

解析:
 
得分:
点评:
 

3.  (填空题) 程序填空14class A {

      int a,b;

    public:

      ___(1)_ //定义构造函数,使参数aabb的默认值为0,

                //在函数体中用aa初始化a,用bb初始化b

    };

main() {

  A *p1, *p2;

  ___(2)_ ;  //调用无参构造函数生成由p1指向的动态对象

  ___(3)_;  //调用带参构造函数生成由p2指向的动态对象,

               //使ab成员分别被初始化为4和5

}

 

(1)                      (2)                         (3)

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
标准答案:
(1)
A(int aa=0, int bb=0){a=aa; b=bb;}

 

(2)
p1=new A()

 

 

(3)
 p2= new A(4,5)

 

 

解析:
 
得分:
点评:
 

4.  (填空题) 程序填空13.class A {

      int a,b;

    public:

      A(int aa=0, int bb=0) ___(1)_{} //分别用aabb对应初始化ab

    };

main() {

  ___(2)_ ;  //定义类A的对象x并用5初始化,同时定义y并用x初始化

  ___(3)_ ;  //定义p指针,使之指向对象x

}

 

(1)                     (2)                     (3)

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
标准答案:
(1)
:a(aa),b(bb)

 

 

(2)
A x(5),y(x)     注: y(x) y=x等效

 

(3)
A *p=&x

 

解析:
 
得分:
点评:
 

5.  (填空题) 程序填空12class A {

     char *a;

   public:

     ___(1)_ //定义无参构造函数,使a的值为空

     A(char *aa) {

       a=___(2)_;  

       strcpy(a,aa);  //用aa所指字符串初始化a所指向的动态存储空间

     }

     ___(3)_ //定义析构函数,删除a所指向的动态存储空间

   };

 

(1)                    (2)                     (3)

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
标准答案:
(1)
 A() {a=0;} A():a(0){}  注:数据0可用NULL代替

 

(2)
 new char[strlen(aa)+1]

 

(3)
~A() {delete []a;}

 

解析:
 
得分:
点评:
 

6.  (填空题)

程序填空11class A {

     int a;

   public:

     A() {a=0;}

    _(1)_{}  //定义构造函数,用参数aa初始化数据成员a

   };

   main() {

    _(2)_;  //定义类A的指针对象p

     _(3)_;   //p指向动态对象并初始化为整数5

   }

 

(1)                    (2                   (3)

 

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
标准答案:
(1)
A(int aa):a(aa)

 

(2)
A *p

 

(3)
p=new A(5)

 

 

解析:
 
得分:
点评:
 

7.  (填空题)

程序填空10已知一个利用数组实现栈的类定义如下:

const int ARRAY_SIZE=10;

class Stack {

public:

void Init() {top=-1;}       //初始化栈为空

    void Push(int newElem);     //向栈中压入一个元素

int Pop();                  //从栈顶弹出一个元素

bool Empty() {  //判栈空

        if(top==-1) return true;else return false;}

int Depth() {return top+1;}  //返回栈的深度

void Print();  

        //按照后进先出原则依次输出栈中每个元素,直到栈空为止

private:

int elem[ARRAY_SIZE];  //用于保存栈元素的数组

int top;               //指明栈顶元素位置的指针

};

 

void Stack::Push(int newElem) {

if(_(1)_) {

cout<<"栈满!"<<endl;

exit(1);  //中止运行

}

_(2)_;

elem[top]=_(3)_;

}

 

(1)                   (2)                   (3)

 

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
标准答案:
(1)
top==ARRAY_SIZE-1

 

(2)
top++(或++top

 

(3)
newElem 

 

解析:
 
得分:
点评:
 

8.  (填空题) 程序填空9. 已知一个类的定义如下:

#include

class AA {

int a[10];

int n;

public:

void SetA(int aa[], int nn); //用数组aa初始化数据成员a,

                             //用nn初始化数据成员n

int MaxA();  //从数组a中前n个元素中查找最大值

void SortA();  //采用选择排序的方法对数组a中前n个元素

               //进行从小到大排序

    void InsertA();//采用插入排序的方法对数组a中前n个元素进行从小到大排序

void PrintA();  //依次输出数组a中的前n个元素

                    //最后输出一个换行

};

 

    使用该类的主函数如下:

void main()

{

int a[10]={23,78,46,55,62,76,90,25,38,42};

AA x;  

___(1)_;

int m=___(2)_;

___(3)_;

cout<<m<<endl;

}

    该程序运行结果为:

23 78 46 55 62 76

78

 

(1)                   (2)                   (3)

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
标准答案:
(1)
x.SetA(a,6)

 

(2)
 x.MaxA()

 

(3)
x.PrintA()

 

解析:
 
得分:
点评:
 

9.  (填空题) 程序填空8. 下面是分数类fract的定义及测试主程序,在类定义及其友元函数定义中有两处错误,更正错误后程序应显示41/28,请指出错误所在行的行号并给出改正意见。

class fract{

    int den;   //分子

    int num;   //分母

public: 

    fract(int d=0,int n=1):den(d),num(n){}       //1行

    friend fract& operator+=(fract,fract&);      //2行

    void show(){ cout<<den<<'/'<<num;}           //3行

};                                               //4行

friend fract& operator+=(fract f1,fract& f2)     //5行

{                                                //7行

    f1.den=f1.den*f2.num+f1.num*f2.den;          //8行

    f1.num*=f2.num;                              //9行

    return f1;                                   //10行

}

void main(){

    fract fr(3,4);

    fr+=fract(5,7);

    fr.show();

}

 

错误行的行号为______________

分别改正为______________________________

        ______________________________

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
(4)
1
标准答案:
(1)
2
(2)
5
(3)
friend fract &operator+=(fract&,fract); 

 

(4)
 fract &operator+=(fract &f1,fract f2); 

 

解析:
 
得分:
点评:
 

10.  (填空题) 程序填空7. 假定要求下面程序输出结果为“d=800,f=60”,在第4-23行中存在着三条语句错误,请指出错误语句的行号并改正。

#include<iostream.h>

class A {                                       //1

    int a[10]; int n;                           //2行

  public:                                       //3行

    A(int aa[], int nn): n(nn) {                //4行

       for(int i=0; i<n; i++) aa[i]=a[i];       //5行

    }                                           //6行

    int Get(int i) {return a[i];}               //7行

int SumA(int n);                            //8

};                                              //9

int A::SumA(int n) {                            //10

int s=0;                                    //11

for(int j=0; j<n; j++) s+=a[j];             //12

return s;                                   //13

}                                               //14

void main() {                                   //15行

    int a[]={2,5,8,10,15,20};                   //16行

    A x(a,6);                                   //17行

    int d=1;                                    //18行

for(int i=0; i<4; i++) d*=x.a[i];           //19行

    int f=SumA(6);                              //20行

cout<<"d="<<d<<,;                          //21行

cout<<"f="<<f<<endl;                        //22行

}                                               //23行

 

错误行的行号为______________________

分别改正为_______________________________________________________

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
(4)
1
(5)
未答题
(6)
1
标准答案:
(1)
5
(2)
19
(3)
20
(4)
a[i]=aa[i];

 

(5)
d*=x.Get(i);

 

(6)
int f=x.SumA(6); 

 

解析:
 
得分:
点评:
 

11.  (填空题) 程序填空1.假定要求下面程序的输出结果为“11/15”,其主函数中存在着三行语句错误,请指出错误语句行的行号并改正错误行。

        #include

        class Franction {  //定义分数类

        int nume;  //定义分子

        int deno;  //定义分母

          public:

          //把*this化简为最简分数,具体定义在另外文件中实现

void FranSimp();  

          //返回两个分数*this和x之和,具体定义在另外文件中实现

Franction FranAdd(const Franction& x);

          //置分数的分子和分母分别0和1

        void InitFranction() {nume=0; deno=1;}

          //置分数的分子和分母分别n和d

        void InitFranction(int n, int d) {nume=n; deno=d;}

      //输出一个分数

void FranOutput() {cout<<nume<<'/'<<deno<<endl;}

        };

 

void main()                               //1行

        {                                         //2行

        Franction a,b,c;                      //3行

        a.InitFranction(6,15);                //4行

        b.InitFranction(1);                   //5行

        c.InitFranction();                    //6行

        c=FranAdd(a,b);                       //7行

        cout<<c.nume<</<<c.deno<<endl;       //8行

        }                                         //9行

 

错误行的行号为______________________

分别改正为_______________________________________________________

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
(4)
1
(5)
1
(6)
1
标准答案:
(1)
5
(2)
7
(3)
8
(4)
 b.InitFranction(1,3);

 

(5)
 c=a.FranAdd(b);

 

(6)
 c.FranOutput()

 

 

解析:
 
得分:
点评:
 

12.  (填空题) 程序填空2. 假定要求下面程序的输出结果为“23/20,其主函数中存在着三条语句错误,请指出错误语句行的行号并改正。

        #include

        class Franction {  //定义分数类

        int nume;  //定义分子

        int deno;  //定义分母

          public:

          //把*this化简为最简分数,具体定义在另外文件中实现

void FranSimp();  

          //返回两个分数*this和x之和,具体定义在另外文件中实现

Franction FranAdd(const Franction& x);

          //置分数的分子和分母分别0和1

        void InitFranction() {nume=0; deno=1;}

          //置分数的分子和分母分别n和d

        void InitFranction(int n, int d) {nume=n; deno=d;}

      //输出一个分数

void FranOutput() {cout<<nume<<'/'<<deno<<endl;}

        };

 

void main()                               //1行

        {                                         //2行

        Franction *a=new Franction;           //3行

        Franction *b=new Franction;           //4行

        a->InitFranction(6,15);               //5行

        b.InitFranction(3,4);                 //6行

        Franction c;                          //7行

            c.InitFranction();                    //8行

        c=a.FranAdd(b);                       //9行

        cout<<c.FranOutput()<<endl;           //10行

        }                                         //11行

 

错误行的行号为______________________

分别改正为_______________________________________________________

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
(4)
1
(5)
1
(6)
1
标准答案:
(1)
6
(2)
9
(3)
10
(4)
 b->InitFranction(3,4);

 

 

(5)
c=a->FranAdd(*b);

 

(6)
c.FranOutput()

 

解析:
 
得分:
点评:
 

13.  (填空题) 程序填空3. 下面是一个类的定义,存在着3处语法错误,请指出错误行的行号并改正。

class CE                                        //1行

 {                                              //2行

    int a,b;                                //3行

    int getmin() {return (a<b? a:b);}       //4行

     public                                     //5行

        int c;                                  //6行

    void SetValue(int x1,int x2, int x3) {   //7行

            a=x1; b=x2; c=x3;                   //8行

    }                                       //9行

    int GetMin();                           //10行

}                                               //11行

int GetMin() {                                  //12行

int d=getmin();                             //13行

return (d<c? d:c);                          //14行

}                                               //15行

 

错误行的行号为______________________

分别改正为_______________________________________________________

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
(4)
1
(5)
1
(6)
1
标准答案:
(1)
5
(2)
11
(3)
12
(4)
 public:  

 

(5)

 };

 

 

(6)
int CE::GetMin() {

 

解析:
 
得分:
点评:
 

14.  (填空题) 程序填空4. 下面程序段第4-10行中存在着三条语句的语法错误,请指出错误语句的行号并改正。

  class A {                                       //1

     int a,b;                                     //2行

     const int c;                                 //3行

   public                                         //4行

     A():c(0);a(0);b(0) {}                        //5行

     A(int aa, int bb) c(aa+bb); {a=aa; b=bb;}    //6行

   };                                             //7行

   A a,b(1,2);                                    //8

   A *x=&a, &y=b;                                 //9行

   A *z=new A, w[10];                             //10

 

错误行的行号为______________________

分别改正为_________________________________________

        ______________________________________  

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
(4)
1
(5)
1
(6)
1
标准答案:
(1)
4
(2)
5
(3)
6
(4)
Public: 

 

(5)
A():c(0),a(0),b(0) {}

 

(6)
A(int aa, int bb): c(aa+bb) {a=aa; b=bb;} 

 

解析:
 
得分:
点评:
 

15.  (填空题) 程序填空5. 下面程序段第4-9行中存在着三条语句错误,请指出错误语句的行号并说明原因。

  class A {                                       //1

     int a,b;                                     //2行

     const int c;                                 //3行

   public:                                        //4行

     A() {a=b=c=0;}                               //5行

     A(int aa, int bb):c(aa+bb) {a=aa; b=bb;}     //6行

   };                                             //7行

   A a,b(1,2,3);                                  //8

   A x(2,3), y(4);                                //9行

 

错误行的行号为______________________

错误原因分别为_______________________________________________________

 

(本题6.0分)

我的答案: (1)
1
(2)
1
(3)
1
(4)
1
(5)
1
(6)
1
标准答案:
(1)
5
(2)
8
(3)
9
(4)
在函数体给常量c赋值

 

(5)
定义b多一个参数

 

(6)
定义y少一个参数

 

解析:
 
得分:
点评:
 

16.  (填空题) 程序填空6. 下面程序段第10-17行中存在着三条语句错误,请指出错误语句的行号并说明原因。

  class A {                                //1

     int a;                                //2行  

  public:                                  //3行

     A(int aa=0):a(aa){}                   //4行

  };                                       //5行

  class B {                                //6行

     int a,b;                              //7行

     const int c;                          //8

     A d;                                  //9行

   public:                                 //10

     B():c(0) {a=b=0;}                     //11

     B(int aa, int bb):d(aa+bb) {          //12

        a=aa; b=bb; c=aa-bb;               //13

     }                                     //14

   }                                       //15

   B a,b(1,2);                             //16

   B x=a,y(b),z(1,2,3),;                   //17   

 

错误行的行号为______________________

错误原因分别为___________________________________________

            _____________________

 

(本题10.0分)

我的答案: (1)
1
(2)
1
(3)
1
(4)
1
(5)
1
(6)
1
标准答案:
(1)
13
(2)
15
(3)
17
(4)
在函数体给常量c赋值

 

(5)
缺少分号

 

(6)
定义z多一个参数

 

 

 

 

1.  (问答题) 名解20.动态绑定(本题5.0分)

我的答案:
1
标准答案:
动态绑定,绑定过程发生在一个源程序经过编译、链接,成为可执行文件这个过程中的程序执行阶段,即绑定过程是在程序运行时才动态完成的,因此又称为滞后联编或后期联编。
解析:
 
得分: 0
点评:
 

2.  (问答题) 名解19.静态绑定(本题5.0分)

我的答案:
11
标准答案:
静态绑定过程发生在编译链接阶段。在编译和链接过程中,系统就根据类型等特征来确定程序中的函数调用过程中将要使用哪些对象,并能决定调用哪一个函数,然后生成能完成语句功能的可执行代码,因此又称为前期绑定。
解析:
 
得分: 0
点评:
 

3.  (问答题) 名解18.绑定(本题5.0分)

我的答案:
11
标准答案:
绑定是程序设计领域中一个重要的基础概念。狭义地说,所谓的绑定就是指将函数调用与适当的函数原型相对应的过程。绑定分为两种:静态绑定和动态绑定。

 

解析:
 
得分: 0
点评:
 

4.  (问答题) 名解17.多态性(本题5.0分)

我的答案:
1
标准答案:
简单地说,多态性是指具有相似功能的不同函数使用同一名称,从而使得可以用相同的调用方式达到调用具有不同功能的同名函数的效用。在面向对象程序设计语言中,多态性是指对应相同的函数名,却执行不同的函数体,用同样的接口去访问功能不同的函数,从而实现“一个接口,多种方法”
解析:
 
得分: 0
点评:
 

5.  (问答题) 名解16.类的继承方式(本题5.0分)

我的答案:
1
标准答案:
继承方式关键字包括private、public 和protected 三种,分别表示私有继承、公有继承和保护继承。如果不指定继承方式,系统将默认为私有继承(private)。类的继承方式指定了派生类成员以及类外对象对于从基类继承来的成员的访问权限。

 

解析:
 
得分: 0
点评:
 

6.  (问答题) 名解15.继承(本题5.0分)

我的答案:
1
标准答案:
继承允许以现有的类为基础来创建新的类。通过已有的类来创建新类的过程称为继承,也叫派生。已有的类称为基类或父类,新创建的类称为派生类或子类。通过继承,派生类拥有基类的数据成员和成员函数,并可以增加自己新的成员或者对基类的成员进行必要的调整。
解析:
 
得分: 0
点评:
 

7.  (问答题) 名解14.类组合(本题5.0分)

我的答案:
1
标准答案:
所谓的类组合,就是指一个类的对象做另外一个类的数据成员,该对象称为类的子对象或对象成员。类的组合描述的就是在一个类的内部嵌套其他类的对象作为数据成员的情况,它们之间的关系式包含与被包含之间的关系。
解析:
 
得分: 0
点评:
 

8.  (问答题) 名解13.友元函数(本题5.0分)

我的答案:
1
标准答案:
友元函数不是当前类的成员函数,它既可以是一个不属于任何类的一般函数,也可以是另一类的成员函数。将一个函数声明为一个类的友元函数后,它不但可以通过对象名访问类的共有成员,而且可以通过对象名访问类中的私有成员。

 

解析:
 
得分: 0
点评:
 

9.  (问答题) 名解12.静态成员函数(本题5.0分)

我的答案:
11
标准答案:
用static关键字修饰的成员函数是静态成员函。静态成员函数可以提供一种类似全局函数性质的操作。这种操作使得不需要生成类的实例,仅通过类名就能够直接被访问,从而减少很多不必要的实例化操作。
解析:
 
得分: 0
点评:
 

10.  (问答题) 名解11.静态数据成员(本题5.0分)

我的答案:
1
标准答案:
用static关键字修饰的数据成员是静态数据成员,数据成员属于类而不属于对象,它由该类的所有对象共同维护和使用。静态数据成员的值对于类的每个对象都是一样的,一个对象对它进行了修改,其他对象会立即看到它的改变,从而实现了同一个类的不同对象之间的数据共享。

 

解析:
 
得分: 0
点评:
 

11.  (问答题) 名解10.常成员函数(本题5.0分)

我的答案:
1
标准答案:
用const 关键字声明的成员函数称为常成员函数。与普通的成员函数不同,常成员函数只能引用类中的数据成员,而不能进行修改。
解析:
 
得分: 0
点评:
 

12.  (问答题) 名解9.常对象成员(本题5.0分)

我的答案:
1
标准答案:
用const 关键字声明的数据成员称为常数据成员。常数据成员的值也是不能改变的, 只能通过构造函数的参数初始化列表对其进行初始化。

 

解析:
 
得分: 0
点评:
 

13.  (问答题) 名解8.常对象(本题5.0分)

我的答案:
1
标准答案:
使用const 关键字声明的对象称为常对。常对象在声明时一定要赋初值,并且该对象不能被更新。
解析:
 
得分: 0
点评:
 

14.  (问答题) 名解7.this 指针(本题5.0分)

我的答案:
1
标准答案:
this 指针是由系统在编译时自动产生的一个指向对象自身的指针,当对象调用一个成员函数时,会把this 指针作为一个隐含参数传递给成员函数。成员函数接收到该指针后, 就可以利用该指针回访对象的数据成员。
解析:
 
得分: 0
点评:
 

15.  (问答题) 名解6.深拷贝(本题5.0分)

我的答案:
1
标准答案:
深拷贝在拷贝指针类型数据成员时,不是简单拷贝其值,而是新申请一块动态存储空间,拷贝指针所指向空间的数据。
解析:
 
得分: 0
点评:
 

16.  (问答题) 名解5.浅拷贝(本题5.0分)

我的答案:
1
标准答案:
浅拷贝也称为值拷贝,就是把一个对象中的数据成员的值拷贝给另一个对象中相应数据成员。浅拷贝不适合拷贝指针类型的数据成员,会发生指针悬挂错误。

 

解析:
 
得分: 0
点评:
 

17.  (问答题) 名解4.析构函数(本题5.0分)

我的答案:
1
标准答案:
析构函数也是一个特殊的成员函数,它的作用与构造函数相反,用于执行一些清理和释放资源的工作。析构函数具有如下特点: 

(1) 函数名是在类名前加上波浪号。

(2) 没有返回值。

(3) 不能指定参数。

(4) 不能重载。

(5) 被系统自动调用。

 

解析:
 
得分: 0.1
点评:
 

18.  (问答题) 名解3.构造函数(本题5.0分)

我的答案:
1
标准答案:
构造函数是类中特殊的成员函数。构造函数一般用来完成对象的初始化操作。构造函数由系统自动执行,在程序中不可显示地调用。构造函数的名称与类名相同,以便编译系统能识别它并把它作为构造函数处理。构造函数没有返回值,可以有参数,可以重载。
解析:
 
得分: 0
点评:
 

19.  (问答题) 名解2.对象(本题5.0分)

我的答案:
1
标准答案:
对象就是某一个类的实例。对象是按照类模型制造出来的实体。对象是面向对象程序运行时的基本单位。

 

解析:
 
得分: 0
点评:
 

20.  (问答题) 名解1.类(本题5.0分)

我的答案:
1
标准答案:
类是面向对象程序设计的核心,它实际上是一种新的数据类型,也是实现抽象类型的工具。类是对具有相同属性特征的一组对象的抽象。类将不同类型的数据和与之相关的操作封装在一起。
 

 

 

1.  (多选题) 多选40. 关于常数据成员的说法,正确的是(   )。(本题2.5分)





学生答案: C,D
标准答案:ABC
解析:
 
得分: 0

2.  (多选题) 多选39. 对于动态分配内存空间描述错误的是(  )。(本题2.5分)





学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

3.  (多选题) 多选38.关于常成员的描述中,正确的是 ( )。(本题2.5分)




 


学生答案: A,B
标准答案:ACD
解析:
 
得分: 0

4.  (多选题) 多选37. 面向对象程序设计思想的主要特征中包括(   )。(本题2.5分)





学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

5.  (多选题) 多选36.下列语句中,将函数int sum(int x, int y)错误重载的是(    )。(本题2.5分)





学生答案: A,B
标准答案:ABD
解析:
 
得分: 1.7

6.  (多选题) 多选35. 下面(   )的叙述符合赋值兼容规则。(本题2.5分)





学生答案: A,B
标准答案:ACD
解析:
 
得分: 0

7.  (多选题) 多选34. 已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,(   )是错误的。  (本题2.5分)





学生答案: A,B
标准答案:BCD
解析:
 
得分: 0

8.  (多选题) 多选33.假设 Aclass为抽象类,下列错误的说明语句是(    )。 (本题2.5分)





学生答案: A,B
标准答案:ACD
解析:
 
得分: 0

9.  (多选题) 多选32.下面函数原型中,(   )声明了fun不为纯虚函数。(本题2.5分)





学生答案: A,B
标准答案:ACD
解析:
 
得分: 0

10.  (多选题) 多选31.关于虚析构函数的叙述错误的是(  )。 (本题2.5分)





学生答案: A,B
标准答案:ABD
解析:
 
得分: 1.7

11.  (多选题) 多选30.在派生类中,重写一个虚函数时,关于函数名、参数的个数、参数的类型、参数的顺序和函数的返回值的要求,错误的是(    )。(本题2.5分)





学生答案: A,B
标准答案:BCD
解析:
 
得分: 0

12.  (多选题) 多选29.下列的模板说明中,错误的是(   )。(本题2.5分)





学生答案: A,B
标准答案:ABD
解析:
 
得分: 1.7

13.  (多选题) 多选28.关于函数模板,描述正确的是(   )。

 

(本题2.5分)





学生答案: A,B
标准答案:BCD
解析:
 
得分: 0

14.  (多选题) 多选27.下面描述中,错误的是(     )。(本题2.5分)





学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

15.  (多选题) 多选26.关于类模板,描述正确的是(   )。(本题2.5分)





学生答案: A,B
标准答案:BCD
解析:
 
得分: 0

16.  (多选题) 多选25.  关于子类型的描述中,(   )是正确的。(本题2.5分)





学生答案: A,B
标准答案:BCD
解析:
 
得分: 0

17.  (多选题) 多选24. (   )是可以作为该类的成员的。(本题2.5分)





学生答案: A,B
标准答案:ACD
解析:
 
得分: 0

18.  (多选题) 多选23.  已知类X是类Y的友元,类Y是类Z的友元,则错误的是(   )。(本题2.5分)




 


学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

19.  (多选题) 多选22.关于类的下列描述中,正确的是(  )。(本题2.5分)





学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

20.  (多选题) 多选21.关于对象的下列描述中,正确的是(  )。(本题2.5分)





学生答案: A,B
标准答案:BCD
解析:
 
得分: 0

21.  (多选题) 多选20.下列关于继承的描述中,错误的是(   )。(本题2.5分)





学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

22.  (多选题) 多选19.关于类的定义的描述中正确的是(     )。(本题2.5分)




 


学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

23.  (多选题) 多选18.关于类中成员函数的描述中,错误的是(   )。(本题2.5分)





学生答案: A,B
标准答案:ACD
解析:
 
得分: 0

24.  (多选题) 多选17.下列描述正确的是(   )。 (本题2.5分)





学生答案: A,B
标准答案:ACD
解析:
 
得分: 0

25.  (多选题) 多选16.下列关于函数模板和模板函数的描述中,正确的是(   )。 (本题2.5分)





学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

26.  (多选题) 多选15.已知函数模板定义为 template<class T>T max(T a,T b){ return a>b?a:b; } 下述描述中,正确的是( )。(本题2.5分)





学生答案: A,B
标准答案:ABD
解析:
 
得分: 1.7

27.  (多选题) 多选14.已知函数模板定义为:template <class T>T max(T a,T b){return a>b?a:b; } 可能生成的模板函数是(   )。 (本题2.5分)





学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

28.  (多选题) 多选13.下列关于类模板的描述中,正确的是(  )。 (本题2.5分)





学生答案: A,B
标准答案:BCD
解析:
 
得分: 0

29.  (多选题) 多选12.下述概念中是面向系统所必须包含的要素是(  )(本题2.5分)





学生答案: A,B
标准答案:BCD
解析:
 
得分: 0

30.  (多选题) 多选11.调用一成员函数时,使用静态联编的情况是(    )。(本题2.5分)





学生答案: A,B
标准答案:ACD
解析:
 
得分: 0

31.  (多选题) 多选10.已知f1 f2同一类两个成员函数,但f1不能调用f2,错误的是(     )(本题2.5分)





学生答案: A,B
标准答案:ACD
解析:
 
得分: 0

32.  (多选题) 多选9.当一个类的某个函数被说明为virtual时,关于该函数在该类的所有派生类中说法错误的是(   )(本题2.5分)





学生答案: A,B
标准答案:BCD
解析:
 
得分: 0

33.  (多选题) 多选8.下面关于引用正确的是(   )。(本题2.5分)





学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

34.  (多选题) 多选7.下面关于const正确的是( )。(本题2.5分)





学生答案: A,B
标准答案:ABD
解析:
 
得分: 1.7

35.  (多选题) 多选6.下面关于类的组合和继承正确的是(  )。(本题2.5分)





学生答案: A,B
标准答案:ACD
解析:
 
得分: 0

36.  (多选题) 多选5.下列关于this指针的描述中,错误的是( )。 (本题2.5分)





学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

37.  (多选题) 多选4.以下类模板定义不正确的为( )。(本题2.5分)





学生答案: A,B
标准答案:BCD
解析:
 
得分: 0

38.  (多选题) 多选3.下面关于类的组合和继承正确的是( )。(本题2.5分)





学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

39.  (多选题) 多选2.下列有关模板的描述正确的是( )。(本题2.5分)





学生答案: A,B
标准答案:ABC
解析:
 
得分: 1.7

40.  (多选题) 多选1.关于类模板的实例化,错误的是( )。(本题2.5分)





学生答案: A,B
标准答案:BCD
解析:
 

 

 

 

1.  (单选题) 单选80. 关于对象和类的关系,说法错误的是(   )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

2.  (单选题) 单选79.派生类的构造函数的成员初始化列中,不能包含(   )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

3.  (单选题) 单选78. 关于delete运算符的下列描述中,(  )是错误的。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

4.  (单选题) 单选77. 使用派生类的主要原因是(    )(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

5.  (单选题) 单选76. 在声明类时,下面的说法正确的是(    )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

6.  (单选题) 单选75. 下面描述中,正确的是(    )。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

7.  (单选题) 单选74. 要实现动态联编,必须通过(    )调用虚函数。(本题1.0分)





学生答案: B
标准答案:A
解析:
 
得分: 0

8.  (单选题) 单选73. 如果一个类至少有一个纯虚函数,那么就称该类为(    )。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

9.  (单选题) 单选72. 下列描述中,(   )是抽象类的特征。(本题1.0分)





学生答案: B
标准答案:D
解析:
 
得分: 0

10.  (单选题) 单选71. 关于纯虚函数和抽象类的描述中,错误的是(    )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

11.  (单选题) 单选70. 运行时的多态性可以通过使用(   )获得。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

12.  (单选题) 单选69. 编译时的多态性可以通过使用(   )获得。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

13.  (单选题) 单选68.下面4个选项中,(   )是用来声明虚函数的。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

14.  (单选题) 单选67.下列关于动态联编的描述中,错误的是()。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

15.  (单选题) 单选66.关于虚函数的描述中,(   )是正确的。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

16.  (单选题) 单选65.下列有关类的说法不正确的是(       )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

17.  (单选题) 单选64. 继承具有(   ),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

18.  (单选题) 单选63. 派生类的对象对其基类中(    )可直接访问。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

19.  (单选题) 单选62. 下列对派生类的描述中错误的说法是:(    )。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

20.  (单选题) 单选61. 当派生类中有和基类一样名字的成员时,一般来说,(  )。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

21.  (单选题) 单选60. 建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(    )的构造函数。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

22.  (单选题) 单选59. 在定义一个派生类时,若不使用保留字显式地规定采用何种继承方式,则默认为(   )方式。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

23.  (单选题) 单选58. 当保护继承时,基类的(    )在派生类中成为保护成员,在类作用域外不能够通过派生类的对象来直接访问该成员。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

24.  (单选题) 单选57. 对于公有继承,基类中的私有成员在派生类中将 (   )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

25.  (单选题) 单选56. 对于公有继承,基类的公有和保护成员在派生类中将(   )成员。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

26.  (单选题) 单选55. 派生类的成员函数可以直接访问基类的(   )成员。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

27.  (单选题) 单选54. C++的继承性允许派生类继承基类的(   )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

28.  (单选题) 单选53. 如果是类B在类A的基础上构造,那么,就称(   )。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

29.  (单选题) 单选52. 从一个基类派生出的各个类的对象之间(    )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

30.  (单选题) 单选51. 关于消息,下列说法中不正确的是(   )。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

31.  (单选题) 单选50. 假定指针变量p定义为“int *p=new int[30];”,要释放p所指向的动态内存,应使用语句(    )。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

32.  (单选题) 单选49. 用new运算符创建一个含10个元素的一维整型数组的正确语句是(    )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

33.  (单选题) 单选48. 以下叙述中正确的是(    )。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

34.  (单选题) 单选47. 采用重载函数的目的是(    )。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

35.  (单选题) 单选46. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择(    )。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

36.  (单选题) 单选45. C++中函数返回值的类型是由(    )决定的。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

37.  (单选题) 单选44. 一个类的友元不是该类的成员,与该类的关系密切,所以它(    )。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

38.  (单选题) 单选43. 一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明(    )。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

39.  (单选题) 单选42. 引入友元的主要目的是为了(    )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

40.  (单选题) 单选41. 当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的(    )。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

41.  (单选题) 单选40. 静态数据成员的初始化是在(    )中进行的。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

42.  (单选题) 单选39. 被非静态成员函数访问的类的数据成员(    )。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

43.  (单选题) 单选38. 静态成员函数对类的数据成员访问(    )。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

44.  (单选题) 单选37. 一个类的静态数据成员所表示属性 (   )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

45.  (单选题) 单选36. 对类对象成员的初始化是通过构造函数中给出的(    )实现的。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

46.  (单选题) 单选35. 设px是指向一个类对象的指针变量,则执行 “delete px;”语句时,将自动调用该类的(    )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

47.  (单选题) 单选34. 假定AB为一个类,则执行 “AB *px=new AB[n];”语句时将(    )(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

48.  (单选题) 单选33. 对于任一个类,用户所能定义的析构函数的个数至多为(    )。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

49.  (单选题) 单选32. 对于任一个类,用户所能定义的构造函数的个数至多为(    )。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

50.  (单选题) 单选31. 假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为(    )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

51.  (单选题) 单选30. 假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为(    )。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

52.  (单选题) 单选29. 若需要使类中的一个指针成员指向一块动态存储空间,则通常在(    )函数中完成。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

53.  (单选题) 单选28. 假定AB为一个类,则执行 “AB r1=r2;”语句时将自动调用该类的(    )。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

54.  (单选题) 单选27. 假定AB为一个类,则执行 “AB *s=new AB(a,5);”语句时得到的一个动态对象为(    )。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

55.  (单选题) 单选26. 假定AB为一个类,则执行 “AB x(a,5);”语句时将自动调用该类的(    )。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

56.  (单选题) 单选25. 假定AB为一个类,则执行 “AB x;”语句时将自动调用该类的(    )。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

57.  (单选题) 单选24. 一个类的析构函数通常被定义为该类的(    )成员。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

58.  (单选题) 单选23. 一个类的构造函数通常被定义为该类的(    )成员。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

59.  (单选题) 单选22. 类的析构函数是一个对象被(    )时自动调用的。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

60.  (单选题) 单选21. 类的构造函数是在定义该类的一个(    )时被自动调用执行的。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

61.  (单选题) 单选20. 对于一个类的析构函数,其函数名与类名(    )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

62.  (单选题) 单选19. 对于一个类的构造函数,其函数名与类名(    )。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

63.  (单选题) 单选18. 类中定义的成员默认为(   )访问属性。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

64.  (单选题) 单选17. 假定AA是一个类,“AA* abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值(   )。(本题1.0分)





学生答案: B
标准答案:C
解析:
 
得分: 0

65.  (单选题) 单选16. 假定AA是一个类,“AA&  abc();”是该类中一个成员函数的原型,若该函数存在对*this赋值的语句,当用x.abc()调用该成员函数后,x的值(   )。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

66.  (单选题) 单选15. 假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为(   )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

67.  (单选题) 单选14. 假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为(   )。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

68.  (单选题) 单选13. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(   )。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

69.  (单选题) 单选12. 假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为(   )。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

70.  (单选题) 单选11. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为(   )。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

71.  (单选题) 单选10. 在关键字private后面定义的成员为类的(   )成员。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

72.  (单选题) 单选9. 在关键字public后面定义的成员为类的(   )成员。(本题1.0分)





学生答案: A
标准答案:B
解析:
 
得分: 0

73.  (单选题) 单选8. 在类作用域中能够通过直接使用该类的(   )成员名进行访问。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

74.  (单选题) 单选7. 在一个类的定义中,包含有(   )成员的定义。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

75.  (单选题) 单选6. 面向对象方法的多态性是指(   )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

76.  (单选题) 单选5. 关于封装,下列说法中不正确的是(   )。(本题1.0分)





学生答案: A
标准答案:D
解析:
 
得分: 0

77.  (单选题) 单选4. 下列(    )的调用方式是引用调用。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

78.  (单选题) 单选3. 以下关于函数模板叙述正确的是(    )。(本题1.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0

79.  (单选题) 单选2. 函数重载是指(    )。(本题1.0分)





学生答案: A
标准答案:A
解析:
 
得分: 1

80.  (单选题) 单选1. 下列的符号常量定义中,错误的定义是(    )。(本题21.0分)





学生答案: A
标准答案:C
解析:
 
得分: 0
返回

 

posted on 2022-04-05 11:09  二十四桥_明月夜  阅读(317)  评论(0)    收藏  举报

导航