c++面向对象程序设计试题和答案(题目).docx
一、填空题(每空1分,共14分)1、观看以下程序:class pointpublic:pointvoid show() cout« «endl;);void main()(point pl;point *p;p=&p 1;pl.show ()通过对象pl访问show函数p.show ()通过指针p访问show函数)、在C+类中可以包含公共 、保护 和私有三种具有不同访2问控制权的成员。、定义类时,在类头中将使用关键3字class来表示类定义的开场。、如果一个类中至少有一个纯虚函数,那末该类称4为抽象类 o、C+类的组成包括数据成员和 成员函数,友元是(是、不 5是)该类的成员函数。6、友员函数是用关键字 friend修饰的非成员函数。7、假设有:int i;int&j二i;i=10; j=i+l;那末 i=11, j=11o8、new的功能是分配内存空间 , delete的功能是 释放内存空间。word选择题(每题1.5分,二、共30分)1) 10D2、B 3、 C 4、D 5、 D 6、 B7、B 8、C 9、C、19A 11、D 12、C 13、D 14、B 15、C 16、A 17、B 18、C、C20、A三、改错题(每错2分,共6分)MyClass obj 1 (0);obj 1 .SetMember(5);obj2.SetMember( 10);5分,共20四、写出以下程序的执行结果每题 分30 15分)2) ) 7 9(每一个 2.5 分)(每一个2.5 20 2。分)4)3 (2 分)3 (2 分)3 ( 1 分五、编程题每题10分、共 30分)第1。页#include <iostream.h>#include <math.h>class rectangle/(2 分)(private:intxl,yl,x2,y2;/(2 分)public:rectangle(int xxl,int yyl,int xx2,int yy2) /(l 分)(xl=xxl ;yl=yyl ;x2=xx2;y2=yy2;)int getarea()/(2 分)(return abs(x2-xl)*(yl-y2););void main()(rectangle recti(3,7,8,5); (2 分)cout«rectl .getarea()«endl; (1 分)word2、(10 分)#include <iostream.h>class car; ( 1 分)class boatprivate:int weight;/(l 分)public:boat(int w):weight(w)/(1分)friend int totalweight(boat bl,car cl);/(2 分);class car/(l 分)private:int weight; (1 分)public:car(int w):weight(w);friend int totalweight(boat bl,car cl); (1 分);int totalweight(boat b 1 ,car c 1 )/(l 分)第12页return b 1. weight+c 1. weight;)void main()(car cl(1000);boat bl(2000);cout«totalweight(bl,c 1 )«endl;(l 分) )3、(1。分)#include<iostream.h>class vehicle /(3定义汽车类分)protected:int wheels;/车轮数float weight; 分量public:vehicle(int wheels,float weight); int get_wheels();wordfloat get_weight();float wheel_load(); void show();;定义小车类¥)class car:publicvehicle / int passenger_load;/载人数public:car(int wheels,float weight,int passengers=4);int get_passengers();void show();;vehicle: :vehicle(int wheels 1,float weight 1)/(1 分) (wheels二 wheels 1;weight= weight 1;)int vehicle:get_wheels() return wheels;float vehicle: :get_weight()(return weight;)void vehicle:show()(l 分)(车轮个分量公斤)car:car(int wheels, float weight,int passengers) :vehicle(wheels, weight) (passenger_load=passengers;)int car: :get_passengers ()(return passenger_load;)void ca亡:show。word车型:小车vehicle:show ();载人人cout« endl;)void main ()(car carl (4,2000,5);( 1 分)输出结果carl, show (); (1 分)婕统偌燃第雕,,海礴撇足髀下攀指需可飘修通改造补嘛,双达击到可加酬的除萩善眉页脚。谢谢!第16页二、选择题(每题1.5分,共30分)1、以下特性中不是面向对象程序设计语言所特有的是(D)。(A)数据封装(B)继承C)多态性D)模板1、 (B)是给变量取一个别名,它引入了变量的允许词。(A)指针B引用(C)枚举(D)构造3、类成员的访问权限中,只能被本类的成员函数和其友元函数访问。(A shareB) publicC) privateD) protected4、关于构造函数,以下说法不正确的选项是U o(A构造函数名字和类名一样(B)构造函数在创立对象时自动执行(C)构造函数无任何函数返回类型(D构造函数有且惟独一个5、派生类可以访问其基类的。A )公有成员B)保护成员C)私有派生D)公有和保护成员6、以下关于运算符重载的描述中,错误的选项是U oA运算符重载不可以改变操作数的个数B运算符重载不可以改变运算符的功能运算符重载不可以改变结合方向D)运算符重载不可以改变运算优先级7、C+语言是从早期的C语言逐渐开展演变而来的.与C语言相比,它在求解问题方法上 发展的最大改良是A面向过程B)面向对象(C)安全性D)复用性8、对于类中定义的成员,其隐含访问权限为0 oA - publicB . protectedC. privateD. static9、下面有关重载函数的说法中正确的选项是 第2页A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同;C)重载函数必须有不同的形参列表(D重载函数名可以不同;10、有如下的对类“CSample的说明,其中U是错误的。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.312、每一个类U构造函数。(A)只能有一个(B)只可有公有的(C)可以有多个D只可有缺省的13、在一个类中可以对一个操作符发展()重载。A) 1种(B) 2种以下3种以下D)多种14、在公有继承的情况下,基类非私有成员在派生类中的访问权限1 )A受限制(B)保持不变C)受保护D)不受保护15、应在以下程序划线处填入的正确语句是)#include <iostream.h>class Basepublic:);class Derived:public Base void fun()显示调用基类的函数fun ()word;1 A) fun();B) Base.fun(); (C) Base:fun(); (D) Base->fun();16、执行下面的程序将输出 #include <iostream.h>class BASEchar c;public:BASE(char n):c(n)virtual BASE()cout«c;);class DERIVED:public BASEchar c;public:DERIVED(char n):BASE(n+l),c(n)DERIVED。cout<<c;);int main()DERIVED a(,X);return 0;)(A) XY (B) YX © XD) Y17、下面描述中,表达错误的选项是1 )(A)公有继承时基类中的public成员在派生类中仍是public的(B)公有继承是基类中的private成员在派生类中仍是private的C)公 有继承时基类中的protected段员在派生类中仍是protected的(D私有继承 时基类中的public版员在派生类中是private的18、定义析构函数时,应该注意1(A)其名与类名彻底一样B)返回类型是void类型第4页C无形参,也不可重载(D)函数体中必须有delete语句19、对于在类中定义的静态数据成员,下面正确的说法是()A.该类的每一个对象中都有一个静态数据成员B.对象创立时产生C在类外发展初始化D.既可以在类外初始化,也可以在类内初始化20、C+中声明常量的关键字是U oA. constB. externC.publicD. enum三、改错题(每处2分,共6分)1、使用VC6翻开考生文件夹下的工程projl,此工程包含一个源程叙文件main.cpp,但该程 序运行有问题,请改正main函数中的错误,使程序的输出结果为:member=0membei-5menber= 10源程叙文件main.cpp清单如下:#include <iostream.h>class MyClass(public:MyClass(inti) member=i;voidSetMember(intm) member=m;int GetMember ()const retummenber;private:int member;);voedmain()wordMyClassobj 1 ; 更正objl .print();MyClassobj2(3);objl.member=5;/ 更正MyClass.SetMember(lO);/ 更正objl .print(); obj2.print(); )5分,共20四、写出以下程序的执行结果每题分)1、#include<iostream.h>class Sample int n; public:Sample(inti)n=i;friend int add(Sample &sl,Sample &s2););int add(Sample &sl,Sample &s2) (return si.n+s2.n;) void main() (Sample sl(10),s2(20);cout«add(s 1 ,s2)«endl;)执行结果是:#include<iostream.h>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;)执行结果是:#include<iostream.h>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()(Dd;d.B:n=10;d.C:n=20;word执行结果是:#include <iostream.h>class myclass(int a,b;static int s;public:myclass(int x,int y)a=x;b=y;s+;void print()cout«s«endl;);int myclass:s=O;void main()(myclass ml(l,2),m2(4,5),m3(6,7); ml .print();m2.print();m3.print();次行结果是:五、编程题(每题10分、共30分)1、测试一个名为rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能 计算矩形的面积。(10分)2、定义一 boat与car两个类,二者都有weight属性,定义二者的一个友元函数 totalweight(),计算二者的分量和。(10分)3、设ti一个汽车类vehicle,包含的数搪成员看车轮个数wheels和车重weight。小车类car是它的派生类,其中包含载人数passengerjoad 。每一个类都有相关数据的输出方法。在主程序中定义一个car类对象,对其车轮个数、车重、载人数发展设置并显示。(10分)填空题(每空一、 1 分,共14分)(2)公有、私有、保 (3 )J4)抽象1 ) p 1 ,show();p->show()护class类(8动态申请内存空间、5 )成员函数、不是 放由new申请的空间 wordfriend(7) 11 、 11 释