《2022年深圳大学期末考试试卷编程题 .pdf》由会员分享,可在线阅读,更多相关《2022年深圳大学期末考试试卷编程题 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象程序设计试卷A 卷第 1 页 共 4 页深圳大学期末考试试卷二、下面的程序是关于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()
2、delete p_book; ; void main() 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 pape
3、r ” endl; CJournal () cout “ Journal default destructor” 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;
4、 CComputerDesign() cout “ Computer Design default destructor” subscribe(); p_journal-read(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 面向对象程序设计试卷A 卷第 2 页 共 4 页1. 当程序运行到处时,写出程序运行的输出结果 (3分) 2. 当程序结束时,程序会在第1 问的基础上增加哪些输出。 (4分) 3. 若在主函数中定义
5、一个对象CJournal journal;程序编译时会否出错?为什么?(3 分) 四、编程题 ( 共 40 分) 1. 定义一个商品类CGoods ,其中包含商品号(long no)、商品名 (char *p_name)、商品价格 (double price)三个数据成员,以及相应的构造函数、拷贝构造函数、析构函数、打印数据成员的成员函数。(10 分) #include #include using namespace std; class CCourse private: long no; char *p_name; float credit; public: CCourse(long no
6、_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_val)+1; strcpy(p_name,p_val); credit=credit_val; CCourse:CCourse(const CCourse &r_course) no=
7、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; coutCourse creditcreditendl; 2. 为 CGoods类增加一个商品总数(int count) 数据成员,并增加一个成员函数getCount()获取 count 的值,编写一个友元函数getNa
8、me() 获取商品名称p_name 。做如上修改后,重新实现CGoods类( 与第 1 问相同的不用再重复) 。(10分) 3. 为 CGoods类定义小于运算符 (=)两个运算符重载函数。CGoods类对象大小的比较是根据其商品价格 (price)的值的大小来实现的。( 与第 2 问相同的不用再重复)(10 分) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - 面向对象程序设计试卷A 卷第 3 页 共 4 页4. 以 CGoo
9、ds类为基类,派生出服装类CClothes 和食品类 CFood两个派生类,并在这两个类中分别增加一个表示品牌的指针数据成员(char *p_brand)和表示用途的成员函数(void usedFor()可分别输出一条表示服装和食品用途的信息 ) 。写出 CClothes 类和 CFood类的完整定义 ( 包括构造、析构和usedFor() 成员函数的实现) 。(10 分) 二、下面的程序是关于CComplex类的一个定义,试改正程序中出现的5 处错误。(共 10 分)#include class CComplex private: double real = 0.0, image; publ
10、ic: CComplex(double a=0.0, double b=0.0) real = a; image = b; static double getReal() const 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 =
11、r_x.real + r_y.image; temp.real = r_x.real + r_y.image; return temp; void main() CComplex a(3.0, 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 &
12、 operator+改为 friend CComplex operator+ 第 12 行, CComplex & operator+改为 CComplex operator+ 三、根据如下所示程序,回答下列问题(共10 分)#include class CBook protected: static int count; public: CBook() count+; cout “ Book constructor called ” count endl; virtual void order() = 0; void read() cout “ Read book ” endl; virtu
13、al CBook() cout “ Book destructor called ” count endl; count-; static int getCount() return count; ; int CBook:count = 0; class CTextBook : public CBook public: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - 面向对象程序设计试卷A 卷第 4 页 共 4 页CTextBo
14、ok() 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 CTextBook:getCount() endl; /
15、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 credit)
16、两个数据成员,以及相应的构造函数和打印数据成员的成员函数print()。(8 分) 2. 为 CCourse 类增加一个课程总数(int total_course)数据成员,并增加一个成员函数getTotalCourse()获取total_course的值,编写一个友元函数getCourseNo() 获取课程号no。做如上修改后,重新实现CCourse 类( 与第 1 问相同的不用再重复,注意说明数据成员和成员函数的存储类型,以便能够用类名来调用getTotalCourse()) 。(10 分) 3. 为 CCourse 类定义小于运算符 ()运算符重载函数。CCourse 类对象大小的比较是
17、根据其课程学分(credit)的值的大小来实现的。( 与第 2 问相同的不用再重复)(5 分) 4. 以 CCourse 类为基类,派生出面向对象程序设计课程类COOP ,并在该类中增加一个表示开课单位的指针数据成员(char *p_openby)和根据学生学号判断能否选课的成员函数bool select(const char *p_xh)(只有学号前4 位为 2006的学生可选面向对象程序设计课程) 。 写出 COOP 类的完整定义 ( 包括构造、 拷贝构造、赋值运算符重载、 析构和 select()成员函数的实现 ) 。(17 分) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -