《最新C++期末测试题.doc》由会员分享,可在线阅读,更多相关《最新C++期末测试题.doc(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC+期末测试题C+期末测试题一、 单项选择题(每题3分,共30分)1、 下面选项中哪项不是面向对象程序设计的特性。( B )A、封装性 B、相似性 C、继承性 D、多态性2、以下哪一关键字可用于重载函数的区分。( C )A、extern B、static C、const D、virtual3、下面关于构造函数的描述中,哪项是错误的。( C )A、构造函数名与类名相同;
2、B、构造函数当对象被创建时会自动调用;C、构造函数不允许重载;D、构造函数没有类型,也没有返回值;4、实现多态性的途径不包括下面哪一项。( D )A、函数重载 B、运算符重载C、虚函数 D、虚基类5、下列关于this 指针说法正确的是( B )A、this指针存在于每一个函数中;B、this指针是指向当前对象的指针;C、this指针是指向虚函数的指针;D、this指针是指向成员函数的指针;6、下列不能重载的运算符是( C )A、& B、= C、 . D、-7、析构函数在下列哪种情况下会自动调用。( C )A、对象创建时 B、对象创建后 C、对象删除时 D、对象删除后8、虚基类的作用主要是( A
3、 )A、避免在派生类中出现多个相同的基类;B、避免在派生类中出现相同的成员函数;C、避免在派生类中出现相同的数据成员;D、允许在派生类中出现多个相同的基类;9、纯虚函数的作用主要是( B )A、定义和实现函数的功能;B、限制派生类必须实现的功能;C、在派生类中可直接使用基类的纯虚函数;D、限制重载虚函数的返回值必须为0;10、下列关于构造函数和析构函数的调用的顺序哪一个是错误的。( A )A、先构造派生类再构造基类;B、先析构派生类再析构基类;C、先构造基类再构造派生类类;D、先构造类中对象在构造派生类;二、 填空题(每题2分,共20分)1、类中的成员从访问和继承属性分public、priva
4、te、protected三种。2、同一组重载的函数之间在 形参上 必须有所不同。3、在UintArray类中,其析构函数的名称为 UintArray。4、抽象类中至少包含 一个纯虚函数。5、要实现在派生类中可以访问基类的public和protected成员,派生类对象可以访问基类的public成员,继承方式必须选择 public。6、一个类中private成员与protected成员不同之处在于 在派生类中基类的private 成员不可访问,而基类的protected 成员可以访问。7、通过对象访问类中的成员是采用 .(成员) 运算符,通过对象的指针访问类中的成员是采用 (指向) 运算符。8、
5、要使一个外部函数可以访问类中的private成员,方法是 在类中将该函数声明为友元函数。9、类中的静态成员函数只能访问类中的 静态 数据成员。10、用new 申请的内存,使用完后,必修用 delete 加以释放。三、 程序阅读题, 写出程序运行结果(每题5分, 共20分)1、运行时输入 12 34#includeusing namespace std;int main()int x, y, z;cin x y;z = x + y;cout z= z endl;return 0;2、#includeusing namespace std;void Test(int x)cout x endl;v
6、oid Test(double x)cout x endl;int main()int x = 10;double y = 123.65;Test(x);Test(y);Test(x + y);return 0;3、#includeusing namespace std;class Complexpublic:Complex(int x = 0, int y = 0) : x(x), y(y)void Display()cout x 0 ? + : ) y i endl;private:int x;int y;int main()Complex a(3, 8), b(4, -6);a.Disp
7、lay();b.Display();return 0;4、#includeusing namespace std;class Basepublic:Base(int x)b = x;cout Base Object Constructed endl;Base()cout Base Object Destructed endl;int b;class Derevid : public Basepublic:Derevid(int x, int y = 0) : Base(x)data = y;cout Derevid Object Constructed endl;Derevid()cout D
8、erevid Object Destructed endl;int Calculate()return data * 4 + b;private:int data;int main()Derevid d(2, 5);cout d.Calculate() endl;return 0;四、 编程题(每题10分,共30分)1、设计一个Circle类,用于求圆的面积和周长,并在主函数中实现应用。#include using namespace std;class circleprivate:double r;public:circle(double r = 0) : r(r)double Area()
9、return r * r * 3.1415926;double circumference() return 2 * r * 3.1415926;int main()circle c(6.2);cout c.Area() endl;cout c.circumference() endl;return 0;2、定义一个string(字符串)类,其中包含用“+”运算符实现两个字符串连接的操作,并实现应用。#include using namespace std;class mystringprivate:char *pc;int length;public:mystring(char *p)len
10、gth = 0;while(plength != 0)length +;pc = new charlength + 1;for(int i = 0;i = length; i+)pci = pi;mystring(mystring &str)pc = new charstr.length + 1;for(int i = 0;i = str.length; i+)pci = stri;char operator (int i)return pci;mystring operator + (mystring &str)char *p = new charlength + 1;for(int i =
11、 0;ilength;i+)pi = pci;for(int i = 0;i=str.length;i+)pi + length = stri;mystring s(p);return s;void display()cout pc endl;mystring()delete pc;int main()mystring str1(ABCD);mystring str2(EFGH);(str1 + str2).display();while(true);return 0;3、先定义一个book(书)类,book类中包含书号、书名、作者、出版社、页数、单价等信息,再从book类派生出Teachin
12、gMaterial(教材)类,增加适用专业,适用课程和静态数据成员库存数量,增加教材采购和教材领用两个成员函数,并实现应用。#include #include using namespace std;class bookprotected:char Number20;char Name40;char Writer20;char Publisher20;int PageCount;float Price;public:book(char *PNumber, char *PName, char *PWriter, char *PPublisher, int count, float price)S
13、trcpy_s(Number, PNumber);Strcpy_s(Name, PName);Strcpy_s(Writer, PWriter);Strcpy_s(Publisher, PPublisher);PageCount = count;Price = price;class TeachingMaterial : public bookprivate:char Professional30;char Course40;int Inventory;static int TotalInventory;public:TeachingMaterial(char *PNumber, char *
14、PName, char *PWriter, char *PPublisher, int count, float price, char *PProfessional, char *PCourse, int inventory): book(PNumber, PName, PWriter, PPublisher, count, price)Strcpy_s(Professional, PProfessional);Strcpy_s(Course, PCourse);Inventory = inventory;TotalInventory += inventory;void display()c
15、out 书号: Number endl;cout 书名: Name endl;cout 作者: Writer endl;cout 出版: Publisher endl;cout 页数: PageCount endl;cout 单价: Price endl;cout 适用专业: Professional endl;cout 适用课程: Course endl;cout 库存: Inventory endl;cout 教材总库存: TotalInventory endl;int TeachingMaterial:TotalInventory = 0;int main()TeachingMaterial tm1(978-7-302-22798-4,C+语言程序设计(第4版),郑莉,清华大学出版社,529,49.0,软件工程,面向对象程序设计(C+), 200);TeachingMaterial tm2(978-7-111-14502-8,C#网络编程与应用,马骏,机械工业出版社,383,34.0,软件工程,C#应用程序设计, 150);tm1.display();tm2.display();while(true);return 0;-
限制150内