《2022年大学C++期末考试试卷复习课程 .pdf》由会员分享,可在线阅读,更多相关《2022年大学C++期末考试试卷复习课程 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、资料收集于网络,如有侵权请联系网站删除word 可编辑二、下面的程序是关于CBook类的一个定义,试改正程序中的错误。(共 10分)#include#include#inlcude class CBook private:char*p_book;public:p_book=new charstrlen(p_val)+1 CBook(const char*p_val)p_book=new charstrlen(p_val);strcpy(p_book,p_val);void print()const cout p_book endl;CBook()delete p_book;void main(
2、)char book_title60;CBook*p_book_obj;cout p;CBook abook(p);p_book_obj=&abook;p_book_obj-print();三、根据如下所示程序,回答下列问题(共10 分)#include class CJournal public:CJournal()cout “Journal default constructor”endl;virtual void subscribe()=0;void read()cout “Read paper”endl;CJournal()cout “Journal default destructo
3、r”endl;class CComputerDesign:public CJournal public:CComputerDesign()cout “Computer Design default constructor”endl;virtual void subscribe()cout “Subscribing Computer Design”endl;void read()cout “Reading Computer Design”endl;CComputerDesign()cout “Computer Design default destructor”subscribe();名师资料总
4、结-精品资料欢迎下载-名师精心整理-第 1 页,共 7 页 -资料收集于网络,如有侵权请联系网站删除word 可编辑p_journal-read();1.当程序运行到处时,写出程序运行的输出结果(3 分)2.当程序结束时,程序会在第1 问的基础上增加哪些输出。(4 分)3.若在主函数中定义一个对象CJournal journal;程序编译时会否出错?为什么?(3 分)四、编程题(共 40分)1.定义一个商品类CGoods,其中包含商品号(long no)、商品名(char*p_name)、商品价格(double price)三个数据成员,以及相应的构造函数、拷贝构造函数、析构函数、打印数据成员
5、的成员函数。(10 分)#include#include using namespace std;class CCourse private:long no;char*p_name;float credit;public:CCourse(long no_val,char p_val,float credit_val);CCourse(const CCourse&r_course);CCourse()delete p_name;void print()const;CCourse:CCourse(long no_val,char p_val,float credit_val)no=no_val;p
6、_name=new charstrlen(p_val)+1;strcpy(p_name,p_val);credit=credit_val;CCourse:CCourse(const CCourse&r_course)no=r_course.no;p_name=new charstrlen(r_course.p_name)+1;strcpy(p_name,r_course.p_name);credit=r_course.credit;void CCourse:print()const coutCourse numbernoendl;coutCourse namep_nameendl;coutCo
7、urse creditcreditendl;2.为 CGoods类增加一个商品总数(int count)数据成员,并增加一个成员函数getCount()获取 count 的值,编写一个友元函数getName()获取商品名称 p_name。做如上修改后,重新实现CGoods 类(与第 1 问相同的不用再重复)。(10 分)3.为 CGoods类定义小于运算符(=)两个运算符重载函数。CGoods类对象大小的比较是根据其商品价格(price)的值的大小来实现的。(与第 2问相同的不用再重复)(10 分)4.以 CGoods类为基类,派生出服装类CClothes 和食品类 CFood两个派生类,并在
8、这名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 7 页 -资料收集于网络,如有侵权请联系网站删除word 可编辑两个类中分别增加一个表示品牌的指针数据成员(char*p_brand)和表示用途的成员函数(void usedFor()可分别输出一条表示服装和食品用途的信息)。写出 CClothes 类和CFood类的完整定义(包括构造、析构和usedFor()成员函数的实现)。(10 分)五、附加题(共 30 分。注意:确保基本题成绩能达到75 分以上,再尝试做附加题!)1.在基本题第四题的基础上,在 CGoods类增加总商品数(long total_goods)和商品总价格(d
9、ouble total_price)两个数据成员,以及相应的获取这两个数据成员值的成员函数getTotalGoods()和 getTotalPrice()。(注意说明数据成员和成员函数的存储类型,以便能够用类名来调用getTotalGoods()和 getTotalPrice()这两个函数)。为了能够采用动态联编的方式调用派生类的usedFor()成员函数,应该在 CGoods类及其派生类 CClothes 和CFood类中作何改动?(15 分)2.编写一个实现两个数交换的函数模板swap,然后使用该函数模板再编写一个对具有n个数组元素(通用类型)的数组采用冒泡排序算法进行排序的函数模板。(1
10、5 分)答案二、#include 改为#include p_book=new charstrlen(p_val)改为 p_book=new charstrlen(p_val)+1 CBook abook;改为 CBook abook(p);p_book_obj=abook改为 p_book_obj=&abook;p_book_obj.print()改为 p_book_obj-print();(该对得 2分,未改或改错得0 分,正确之处该成错误倒扣1 分)三、1.Journal default constructor default constructor Subscribing Reading
11、 (全部答对得3 分,答错或漏答一条输出扣1 分)2.Subscribing Reading paper default destructor Journal default destructor(全部答对得4 分,答错或漏答一条输出扣1 分)3.会出错,因为CJournal 中包含有纯虚函数,故CJournal 是抽象类,不能定义抽象类对象。(答对编译会出错得1 分,答对原因得2 分。)四、1.#include#include using namespace std;class CCourse private:long no;char*p_name;float credit;public:C
12、Course(long no_val,char*p_val,float credit_val);CCourse(const CCourse&r_course);CCourse()delete p_name;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 7 页 -资料收集于网络,如有侵权请联系网站删除word 可编辑 void print()const;CCourse:CCourse(long no_val,char*p_val,float credit_val)no=no_val;p_name=new charstrlen(p_val)+1;strcpy(p_name,p_va
13、l);credit=credit_val;CCourse:CCourse(const CCourse&r_course)no=r_course.no;p_name=new charstrlen(r_course.p_name)+1;strcpy(p_name,r_course.p_name);credit=r_course.credit;void CCourse:print()const cout Course number:no endl;cout Course name:p_name endl;cout Course credit:credit endl;(数据成员定义正确得2 分,部分正
14、确得1 分,不正确得0 分每个成员函数定义正确得2 分,每个成员函数有小错误扣1 分,完全不正确不得分)2.在 class CCourse定义中增加一条:private:static int total_course;(答对得 1 分,未加 static得 0 分)在类外部增加一条:int CCourse:total_course=0;(答对得 1 分,答错或漏答得0 分)在 CCourse 类的构造函数中增加一条:total_course+;(答对得 1 分)在 CCourse 类的拷贝构造函数中增加一条:total_course+;(答对得 1 分)在 CCourse 类的析构函数中增加一
15、条:total_course-;(答对得 1 分)在 class CCourse定义中增加一条:public:static getTotalCourse()return total_course;(答对得 2 分,未加 static得 1 分)在 class CCourse定义中增加一条:friend char*getCourseName(const CCourse&r_course);(答对得 1 分,未加 friend得 0 分)在类外部定义:char*getCourseName(const CCourse&r_course)return r_course.p_name;(答对得 2 分)
16、3.在 class CCourse定义中增加一条:public:bool operator(const CCourse&r_course);(答对得 2 分)名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 7 页 -资料收集于网络,如有侵权请联系网站删除word 可编辑在类外部定义:bool CCourse:operator(const CCourse&r_course)if(credit=(const CCourse&r_course);(答对得 2 分)在类外部定义:bool CCourse:operator=(const CCourse&r_course)if(credit
17、=r_course.credit)return true;else return false;(答对得 3 分)4.class CHLP:public CCourse private:char*p_openby;public:CHLP(long no_val,char*p_val,float credit_val,char*p_open):CCourse(no_val,p_val,credit_val)p_openby=new charstrlen(p_open)+1;strcpy(p_openby,p_open);CHLP()delete p_openby;void studyFor()co
18、ut Study for structured programming endl;(答对得 5 分,其中构造函数3 分,析构函数1 分,studyFor()函数 1 分)class COOP:public CCourse private:char*p_openby;public:COOP(long no_val,char*p_val,float credit_val,char*p_open):CCourse(no_val,p_val,credit_val)p_openby=new charstrlen(p_open)+1;strcpy(p_openby,p_open);COOP()delete
19、 p_openby;void studyFor()cout Study for object oriented programming endl;(答对得 5 分,其中构造函数3 分,析构函数1 分,studyFor()函数 1 分)五、1.在 class CCourse定义中增加一条:public:virtual void studyFor()cout study for degreen;名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 7 页 -资料收集于网络,如有侵权请联系网站删除word 可编辑 (答对得 2 分)增加:#include 主函数可定义为:void main(
20、)char choice,instructor10;float credit;long id;CCourse*p_course;cout Select course:n;cout 1.for High Level Language Programmingn;cout choice;cout id;cout credit;cout instructor;switch(choice)case 1:p_course=new CHLP(id,高级语言程序设计,credit,instructor);break;case 2:p_course=new COOP(id,面向对象程序设计,credit,ins
21、tructor);break;default:exit(0);p_course-studyFor();delete p_course;(答对得 13 分)2.#include using namespace std;template void swap(T&a,T&b)T temp;temp=a;a=b;b=temp;template void bubbleSort(T a,int n)名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 7 页 -资料收集于网络,如有侵权请联系网站删除word 可编辑int i,j;for(i=1;i n;i+)for(j=0;j aj+1)swap(aj,aj+1);template void print(T1 a,int n)for(int i=0;i n;i+)cout ai ;cout endl;void main()int a=2,3,1,6,43,22;double b=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);(答对得 15 分)名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 7 页 -