《大学C期末考试试卷(含答案).pdf》由会员分享,可在线阅读,更多相关《大学C期末考试试卷(含答案).pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、分)#include#include#inlcude class CBookprivate:char*p_book;public:p_book=new charstrlen(p_val)+lCBook(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()char book_title60;CBook*p_book_obj;cout/Enter book title:;cin p;
2、CBook abook(p);p_book_obj=&abook;p_book_obj-print();三、根据如下所示程序,回答下列问题(共10分)#include class CJournalpublic:CJournal()cout Journal default constructor endl;virtual void subscribe()=0;void read()cout ”Read paper endl;CJournal()cout Journal default destructor endl;;class CComputerDesign:public CJournalpu
3、blic:CComputerDesign()cout Computer Designdefault constructor endl;Jvirtual void subscribe()cout /Subscribing Computer Design endl;void read()cout /Reading Computer Design endl;CComputerDesign()cout Computer Designdefault destructor”endl;void main()CComputerDesign journall;CJournal*pjournal;journall
4、.subscribe();journall.read();1.当程序运行到处时,写出程序运行的输出结果(3分)2.当程序结束时,程序会在第1 问的基础上增加哪些输出。(4 分)3.若在主函数中定义一个对象Qournal journal;程序编译时会否出错?为什么?(3分)四、编程题(共40分)1.定义一个商品类CGoods,其中包含商品号(long no)、商品名(char*p_name)商品价格(double price)三个数据成员,以及相应的构造函数、拷贝构造函数、析构函数、打印数据成员的成员函数。(10分)#include#include using namespace std;cla
5、ss CCourseprivate:long no;char*p_name;float credit;public:CCourse(long no_valzchar 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_name=new charstrlen(p_val)+l;strcpy(p_name7 p_va I)
6、;credit=credit_val;)CCourse:CCourse(const CCourse&r_course)no=r_course.no;p_name=new charstrlen(r_course.p_name)+l;strcpy(p_name,r_course.p_name);credit=r_course.credit;)void CCourse:print()constcoutCourse numbernoendl;coutCourse namep_nameendl;coutCourse creditcreditendl;2.为CGoods类增加一个商品总数(int coun
7、t)数据成员,并增加一个成员函数getCount。获取count的值,编写一个友元函数getName()获取商品名称p_name0做如上修改后,重新实现CGoods类(与第1 问相同的不用再重复)。(10分)3.为CGoods类定义小于运算符(N)和不小于运算符(,=,)两个运算符重载函数。CGoods类对象大小的比较是根据其商品价格(price)的值的大小来实现的。(与第2 问相同的不用再重复)(10分)五、附加题(共30分。注意:确保基本题成绩能达到75分以上,再尝试做附加题!)1.在基本题第四题的基础上,在 CGoods类增力口总商品数(longtotal_goods)和商品总价格(do
8、ubletotal_price)两个数据成员,以及相应的获取这两个数据成员值的成员函数getTotalGoods。和 getTotalPrice()o(注意说明数据成员和成员函数的存储类型,以便能够用类名来调用getTotalGoods()和 getTotalPrice()这两个函数)。为了能够采用动态联编的方式调用派生类的usedFor()成员函数,应该在CGoods类及其派生类CCIothes和 CFood类中作何改动?(15分)2.编写一个实现两个数交换的函数模板sw ap,然后使用该函数模板再编写一个对具有n 个数组元素(通用类型)的数组采用冒泡排序算法进行排序的函数模板。(15分)答
9、案、#include 改为#include p_book=new charstrlen(p_val)改为 p_book=new charstrlen(p_val)+lCBookabook;改为 CBook abook(p);p_book_obj=abook 改为 p_book_obj=&abook;p_book_obj.print。改为 p_book_obj-print();(该对得2 分,未改或改错得。分,正确之处该成错误倒扣1 分)1.Journal default constructorComputer Design default constructorSubscribing Comp
10、uter DesignReading Computer Design(全部答对得3 分,答错或漏答一条输出扣1 分)2.Subscribing Computer DesignReading paperComputer Design default destructorJournal default destructor(全部答对得4 分,答错或漏答一条输出扣1 分)3.会出错,因为Qournal中包含有纯虚函数,故Qournal是抽象类,不能定义抽象类对象。(答对编译会出错得1 分,答对原因得2 分。)四、1.#include#include using namespace std;class
11、 CCourseprivate: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;strcpy(p_name,p_val);credit=credit_val;CCourse:CCourse(const CCourse&r_course)no=r_course.no;p_name=new charstrlen(r_cours
12、e.p_name)+l;strcpy(p_name,r_course.p_name);credit=r_course.credit;void CCourse:print()constcout Course number:no endl;cout Course name:p_name endl;cout Course credit:credit endl;(数据成员定义正确得2分,部分正确得1分,不正确得0分每个成员函数定义正确得2分,每个成员函数有小错误扣1分,完全不正确不得分)2.在class CCourse定义中增加一条:private:static int total_course;(答
13、对得1 分,未加static得 0 分)在类外部增加一条:int CCourse:total_course=0;(答对得1 分,答错或漏答得0 分)在 CCourse类的构造函数中增加一条:total_course+;(答对得 1 分)在 CCourse类的拷贝构造函数中增加一条:total_course+;(答对得 1 分)在 CCourse类的析构函数中增加一条:total_course-;(答对得 1 分)在 class CCourse定义中增加一条:public:static getTotalCourse()return total_course;(答对得2 分,未 加 static得
14、 1 分)在 class CCourse定义中增加一条:friend char*getCourseName(const CCourse&r_course);(答对得1 分,未加friend得。分)在类外部定义:char*getCourseName(const CCourse&r_course)return r_course.p_name;(答对得 2 分)3.在class CCourse定义中增加一条:public:bool operator(const CCourse&r_course);(答对得2 分)在类外部定义:bool CCourse:operator(const CCourse&r
15、_course)if(credit=(const CCourse&r_course);(答对得 2 分)在类外部定义:bool CCourse:operator=(const CCourse&r_course)if(credit=r_course.credit)return true;elsereturn false;)(答对得3 分)4.class CHLP:public CCourseprivate:char*p_openby;public:CHLP(long no_val,char*p_val,float credit_val,char*p_open):CCourse(no_val,p_
16、val,credit_val)p_openby=new charstrlen(p_open)+l;strcpy(p_openby,p_open);CHLP()delete p_openby;void studyFor()cout Study for structured programming endl;(答对得5 分,其中构造函数3 分,析构函数1 分,studyFor()函数1 分)class COOP:public CCourseprivate:char*p_openby;public:COOP(long no_val,char*p_val,float credit_val,char*p
17、_open):CCourse(no_val/p_val/credit_val)p_openby=new charstrlen(p_open)+l;strcpy(p_openby,p_open);)COOP()delete 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 degr
18、een;(答对得2 分)增加:#include 主函数可定义为:void main()cout Select course:n;cout 1.for High Level Language Programmingn;cout 2.for Object Oriented Programmingn;cin choice;cout Enter course number:cin id;cout Enter credit:cin credit;cout Enter instructor name:cin instructor;switch(choice)case I1:p_course=new CHL
19、P(id,高级语言程序设计,credit,instructor);break;case 2:p_course=new COOP(id,面向对象程序设计,credit,instructor);break;default:exit(O);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)int i,j;for(i=l;i n;i+)for(j=0;j aj+l)swap(aj,ab+1);template void print(Tl a,int n)for(int i=0;i n;i+)cout ai double b=2.3,3.2,1.6,-6.0,4.3,2.2;printfa,6);bubbleSort(a7 6);print(a,6);print(b,6);bubbleSort(b,6);print(b,6);