《深圳大学期末考试试卷编程题(共4页).doc》由会员分享,可在线阅读,更多相关《深圳大学期末考试试卷编程题(共4页).doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上深圳大学期末考试试卷二、下面的程序是关于CBook类的一个定义,试改正程序中的错误。(共10分)#include #include #inlcude class CBookprivate:char *p_book;public:p_book=new charstrlen(p_val)+1CBook(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; ;vo
2、id main()char book_title60;CBook *p_book_obj; cout p;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 “Jour
3、nal default destructor” endl; ;class CComputerDesign : public CJournalpublic:CComputerDesign () cout “Computer Designdefault constructor” endl; virtual void subscribe() cout “Subscribing Computer Design” endl; void read() cout “Reading Computer Design” endl; CComputerDesign() cout “Computer Designde
4、fault destructor” subscribe();p_journal-read();1.当程序运行到处时,写出程序运行的输出结果 (3分)2. 当程序结束时,程序会在第1问的基础上增加哪些输出。 (4分)3. 若在主函数中定义一个对象CJournal journal;程序编译时会否出错?为什么?(3分)四、编程题(共40分)1. 定义一个商品类CGoods,其中包含商品号(long no)、商品名(char *p_name)、商品价格(double price)三个数据成员,以及相应的构造函数、拷贝构造函数、析构函数、打印数据成员的成员函数。(10分)#include #includ
5、e using namespace std;class 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;CCourse:CCourse(long no_val,char p_val,float credit_val)no=no_val;p_name=new charstrlen(p_v
6、al)+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() constcoutCourse numbernoendl;coutCourse namep_nameendl;coutCourse creditcreditendl;2
7、. 为CGoods类增加一个商品总数(int count)数据成员,并增加一个成员函数getCount()获取count的值,编写一个友元函数getName()获取商品名称p_name。做如上修改后,重新实现CGoods类(与第1问相同的不用再重复)。(10分)3. 为CGoods类定义小于运算符(=)两个运算符重载函数。CGoods类对象大小的比较是根据其商品价格(price)的值的大小来实现的。(与第2问相同的不用再重复)(10分)4. 以CGoods类为基类,派生出服装类CClothes和食品类CFood两个派生类,并在这两个类中分别增加一个表示品牌的指针数据成员(char *p_bra
8、nd)和表示用途的成员函数(void usedFor()可分别输出一条表示服装和食品用途的信息)。写出CClothes类和CFood类的完整定义(包括构造、析构和usedFor()成员函数的实现)。(10分)二、下面的程序是关于CComplex类的一个定义,试改正程序中出现的5处错误。(共10分)#include class CComplexprivate:double real = 0.0, image;public:CComplex(double a=0.0, double b=0.0) real = a; image = b; static double getReal() const
9、return real; int getImage() const return image; CComplex & operator + (const CComplex &r_x, const CComplex &r_y);CComplex & operator + (const CComplex &r_x, const CComplex &r_y) CComplex temp; temp.real = r_x.real + r_y.image; temp.real = r_x.real + r_y.image; return temp;void main()CComplex a(3.0,
10、4.0), b(5.0), c; c = a + b; cout c.getReal(); cout c.getImage();错误为:第5行,real=0.0,改为real, 第8行,static double getReal()改为double getReal() 第9行,int getImage()改为double getImage() 第10行,CComplex & operator+改为friend CComplex operator+ 第12行,CComplex & operator+改为CComplex operator+三、根据如下所示程序,回答下列问题(共10分)#inclu
11、de class CBookprotected: static int count;public:CBook() count+; cout “Book constructor called ” count endl; virtual void order() = 0;void read() cout “Read book” endl; virtual CBook() cout “Book destructor called ” count endl; count-; static int getCount() return count; ;int CBook:count = 0;class C
12、TextBook : public CBookpublic:CTextBook() cout “Textbook constructor called ” count endl; void order() cout “Order textbook” endl; void read() cout “Read textbook” endl; CTextBook() cout “Textbook destructor called ” count endl; ;void main()CTextBook oop;CBook *p_book;oop.order();oop.read();cout CTe
13、xtBook:getCount() endl;/ p_book = new CTextBook;cout CTextBook:getCount() order();p_book-read();delete p_book;cout CTextBook:getCount() endl;1当程序运行到处时,写出程序运行的输出结果 (3分)2 当程序结束时,程序会在第1问的基础上增加哪些输出。 (5分)3 若在主函数中定义一个对象CBook book;程序编译时会否出错?为什么?(2分)四、编程题(共40分)1. 定义一个课程类CCourse,其中包含课程号(long no)、课程学分(float c
14、redit)两个数据成员,以及相应的构造函数和打印数据成员的成员函数print()。(8分)2. 为CCourse类增加一个课程总数(int total_course)数据成员,并增加一个成员函数getTotalCourse()获取total_course的值,编写一个友元函数getCourseNo()获取课程号no。做如上修改后,重新实现CCourse类(与第1问相同的不用再重复,注意说明数据成员和成员函数的存储类型,以便能够用类名来调用getTotalCourse())。(10分)3. 为CCourse类定义小于运算符()运算符重载函数。CCourse类对象大小的比较是根据其课程学分(credit)的值的大小来实现的。(与第2问相同的不用再重复)(5分)4. 以CCourse类为基类,派生出面向对象程序设计课程类COOP,并在该类中增加一个表示开课单位的指针数据成员(char *p_openby)和根据学生学号判断能否选课的成员函数bool select(const char *p_xh)(只有学号前4位为2006的学生可选面向对象程序设计课程)。写出COOP类的完整定义(包括构造、拷贝构造、赋值运算符重载、析构和select()成员函数的实现)。(17分)专心-专注-专业