文档库 最新最全的文档下载
当前位置:文档库 › c 面向对象程序设计试题和答案(经典题目)

c 面向对象程序设计试题和答案(经典题目)

系名____________班级____________姓名____________学号____________

密封线内不答题

一、 填空题(每空1分,共14分) 1、 观看以下程序:

class point{ public:

void show() {cout<<”point ”<

void main() { point p1; point *p; p=&p1;

______p1.show()_________//通过对象p1访问show 函数 _______p.show()_______//通过指针p 访问show 函数 }

2、 在C++类中可以包含___公共___、___保护_____和___私有__三种具有不同访问控制

权的成员。

3、 定义类时,在类头中将使用关键字__class _____来表示类定义的开始。

4、 如果一个类中至少有一个纯虚函数,则该类称为_______抽象类_________。

5、 C++类的组成包括数据成员和______成员函数________,友元__是___(是、不是)

该类的成员函数。

6、 友员函数是用关键字_____friend_______修饰的非成员函数。

7、 若有:

int i; int &j=i; i=10; j=i+1;

则i=____11_____,j=___11______。

8、 new 的功能是_______分配内存空间______,delete 的功能是______释放内存空间______________。

二、 选择题(每小题1.5分,共30分)

1、下列特性中不是面向对象程序设计语言所特有的是( D )。 (A )数据封装

(B )继承(C )多态性 (D )模板

2、( B )是给变量取一个别名,它引入了变量的同意词。

(A)指针(B)引用(C)枚举(D)结构

3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。

(A)share (B)public (C)private (D)protected

4、关于构造函数,下列说法不正确的是()。

(A)构造函数名字和类名相同

(B)构造函数在创建对象时自动执行

(C)构造函数无任何函数返回类型

(D)构造函数有且只有一个

5、派生类可以访问其基类的()。

(A)公有成员(B)保护成员

(C)私有派生(D)公有和保护成员

6、下列关于运算符重载的描述中,错误的是()。

(A)运算符重载不可以改变操作数的个数

(B)运算符重载不可以改变运算符的功能

(C)运算符重载不可以改变结合方向

(D)运算符重载不可以改变运算优先级

7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()

(A)面向过程(B)面向对象(C)安全性(D)复用性

8、对于类中定义的成员,其隐含访问权限为()。

A.public B.protected

C.private D.static

9、下面有关重载函数的说法中正确的是()

(A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同;

(C)重载函数必须有不同的形参列表(D)重载函数名可以不同;

10、有如下的对类“CSample”的说明,其中()是错误的。

class CSample {

A.int a=23;

B.CSample();

public:

C.CSample(int val);

D.~ CSample();

11、在int a=3,int *p=&a;中,*p的值是( )

A.变量a的地址值

B.无意义

C.变量p的地址值

D.3

12、每个类()构造函数。

(A)只能有一个(B)只可有公有的

——第2页——

系名____________班级____________姓名____________学号____________

密封线内不答题

(C )可以有多个 (D )只可有缺省的

13、在一个类中可以对一个操作符进行( )重载。

(A )1 种 (B )2 种以下 (C )3 种以下 (D )多种

14、在公有继承的情况下,基类非私有成员在派生类中的访问权限( )

(A ) 受限制 (B )保持不变 (C )受保护 (D )不受保护 15、应在下列程序划线处填入的正确语句是( ) #include class Base {public:

fun(){cout<<"Base::fun"<

};

class Derived:public Base { void fun()

{_____________//显示调用基类的函数fun()

cout<<"Derived::fun"<

(A )fun(); (B )Base.fun(); (C )Base::fun(); (D )Base->fun(); 16、执行下面的程序将输出( ) #include class BASE{ char c; public: BASE(char n):c(n){} virtual ~BASE(){cout<

};

class DERIVED:public BASE{

char c;

public:

DERIVED(char n):BASE(n+1),c(n){} ~DERIVED(){cout<

——第4页——

return 0; }

(A )XY (B )YX (C )X (D )Y 17、下面描述中,表达错误的是( )

(A )公有继承时基类中的public 成员在派生类中仍是public 的

(B )公有继承是基类中的private 成员在派生类中仍是private 的 (C )公有继承时基类中的protected 成员在派生类中仍是protected 的 (D )私有继承时基类中的public 成员在派生类中是private 的 18、定义析构函数时,应该注意( )

(A )其名与类名完全相同 (B )返回类型是 void 类型

(C )无形参,也不可重载 (D )函数体中必须有 delete 语句 19、对于在类中定义的静态数据成员,下面正确的说法是( ) A.该类的每个对象中都有一个静态数据成员 B.对象创建时产生 C.在类外进行初始化

D.既可以在类外初始化,也可以在类内初始化

20、C++中声明常量的关键字是( )。 A. const B. extern C. public D. enum

三、 改错题(每处2分,共6分)

1、 使用VC6打开考生文件夹下的工程proj1,此工程包含一个源程序文件main.cpp,但

该程序运行有问题,请改正main 函数中的错误,使程序的输出结果为:

member=0

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

MyClass

{

MyClass(int

i){member=i;} void SetMember(int

m){member=m;} int GetMember()const{return

menber;}

void

print()cont{cout<<"member="<

系名____________班级____________姓名____________学号____________

密封线内不答题

int

member;

main()

MyClass obj1; //更正

_____________________________

obj1.print(); MyClass

obj2(3);

obj1.member=5; //更正

__________________________ MyClass.SetMember(10); //更正

_______________________

obj1.print();

obj2.print();

四、 写出下列程序的执行结果(每小题5分,共20分) 1、

#include class Sample { int n; public:

Sample(int i){n=i;}

friend int add(Sample &s1,Sample &s2); };

int add(Sample &s1,Sample &s2) {

return s1.n+s2.n; }

void main() {

S ample s1(10),s2(20); cout<

执行结果是: 2、

#include

int add(int x,int y)

{

return x+y+1;

}

double add(double x,double y)

{

return x+y-1;

}

void main()

{

int a=2,b=4;

double c=2.6,d=7.4;

cout<

}

执行结果是:

3、

#include

class A

{

public:

int n;

};

class B:virtual public A{};

class C:virtual public A{};

class D:public B,public C

{

int getn(){return B::n;}

};

void main()

{

D d;

——第6页——

系名____________班级____________姓名____________学号____________

密封线内不答题

d.B::n=10; d.C::n=20;

cout<

执行结果是:

4、

#include

class myclass {

int a,b;

static int s; public:

myclass(int x,int y) {a=x;b=y;s++;} void print() {cout<

int myclass::s=0; void main() {

myclass m1(1,2),m2(4,5),m3(6,7); m1.print(); m2.print(); m3.print(); }

执行结果是:

五、 编程题(每题10分、共30分)

1、 测试一个名为rectangle 的矩形类,其属性为矩形的左下角与右上角两个点的坐标,

能计算矩形的面积。(10分)

2、 定义一boat 与car 两个类,二者都有weight 属性,定义二者的一个友元函数

totalweight(),计算二者的重量和。(10分)

3、设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。小车

类car是它的派生类,其中包含载人数passenger_load。每个类都有相关数据的输出方法。在主程序中定义一个car类对象,对其车轮个数、车重、载人数进行设置并显示。(10分)

一、填空题(每空1分,共14分)

(1)p1.show(); p->show() (2)公有、私有、保护(3)class (4)抽象类(5)成员函数、不是(6)friend (7)11、11 (8)动态申请内存空间、释放由new申请的空间

二、选择题(每小题1.5分,共30分)

1、D

2、B

3、C

4、D

5、D

6、B

7、B

8、C

9、C 10、A 11、D 12、C 13、D 14、B 15、C 16、A 17、B 18、C 19、C 20、A

三、改错题(每错2分,共6分)

MyClass obj1(0); obj1.SetMember(5); obj2.SetMember(10);

四、写出下列程序的执行结果(每小题5分,共20分)

(1)30 (5分)

(2)7 9 (每个2.5分)

(3)20 20 (每个2.5分)

(4)

3(2分)

3(2分)

3(1分)

五、编程题(每题10分、共30分)

1、

#include

#include

——第8页——

系名____________班级____________姓名____________学号____________

密封线内不答题

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<

2、(10分)

#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<

}

3、(10分)

#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()

——第10页——

系名____________班级____________姓名____________学号____________

密封线内不答题

{

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分) }

3、通过活动,使学生养成博览群书的好

习惯。

B 比率分析法和比较分析法不能测算出各因素的影响程度。√

C 采用约当产量比例法,分配原材料费用与分配加工费用所用的完工率都是一致的。X

C 采用直接分配法分配辅助生产费用时,应考虑各辅助生产车间之间相互提供产品或劳务的情况。错 C 产品的实际生产成本包括废品损失和停工损失。√ C 成本报表是对外报告的会计报表。×

C 成本分析的首要程序是发现问题、分析原因。× C 成本会计的对象是指成本核算。×

C 成本计算的辅助方法一般应与基本方法结合使用而不单独使用。√ C 成本计算方法中的最基本的方法是分步法。X

D 当车间生产多种产品时,“废品损失”、“停工损失”的借方余额,月末均直接记入该产品的产品成本 中。×

D 定额法是为了简化成本计算而采用的一种成本计算方法。×

F“废品损失”账户月末没有余额。√

F废品损失是指在生产过程中发现和入库后发现的不可修复废品的生产成本和可修复废品的修复费用。X

F分步法的一个重要特点是各步骤之间要进行成本结转。(√)

G各月末在产品数量变化不大的产品,可不计算月末在产品成本。错

G工资费用就是成本项目。(×)

G归集在基本生产车间的制造费用最后均应分配计入产品成本中。对

J计算计时工资费用,应以考勤记录中的工作时间记录为依据。(√)

J简化的分批法就是不计算在产品成本的分批法。(×)

J简化分批法是不分批计算在产品成本的方法。对

J加班加点工资既可能是直接计人费用,又可能是间接计人费用。√

J接生产工艺过程的特点,工业企业的生产可分为大量生产、成批生产和单件生产三种,X

K可修复废品是指技术上可以修复使用的废品。错

K可修复废品是指经过修理可以使用,而不管修复费用在经济上是否合算的废品。X

P品种法只适用于大量大批的单步骤生产的企业。×

Q企业的制造费用一定要通过“制造费用”科目核算。X

Q企业职工的医药费、医务部门、职工浴室等部门职工的工资,均应通过“应付工资”科目核算。X

S生产车间耗用的材料,全部计入“直接材料”成本项目。X

S适应生产特点和管理要求,采用适当的成本计算方法,是成本核算的基础工作。(×)

W完工产品费用等于月初在产品费用加本月生产费用减月末在产品费用。对

Y“预提费用”可能出现借方余额,其性质属于资产,实际上是待摊费用。对

Y引起资产和负债同时减少的支出是费用性支出。X

Y以应付票据去偿付购买材料的费用,是成本性支出。X

Y原材料分工序一次投入与原材料在每道工序陆续投入,其完工率的计算方法是完全一致的。X

Y运用连环替代法进行分析,即使随意改变各构成因素的替换顺序,各因素的影响结果加总后仍等于指标的总差异,因此更换各因索替换顺序,不会影响分析的结果。(×)

Z在产品品种规格繁多的情况下,应该采用分类法计算产品成本。对

Z直接生产费用就是直接计人费用。X

Z逐步结转分步法也称为计列半成品分步法。√

A按年度计划分配率分配制造费用,“制造费用”账户月末(可能有月末余额/可能有借方余额/可能有贷方余额/可能无月末余额)。

A按年度计划分配率分配制造费用的方法适用于(季节性生产企业)

——第12页——

相关文档
相关文档 最新文档