收藏 分销(赏)

大学C++期末考试试卷(含答案)复习课程.doc

上传人:天**** 文档编号:4599628 上传时间:2024-10-03 格式:DOC 页数:7 大小:36.50KB 下载积分:6 金币
下载 相关 举报
大学C++期末考试试卷(含答案)复习课程.doc_第1页
第1页 / 共7页
大学C++期末考试试卷(含答案)复习课程.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
二、下面的程序是关于CBook类的一个定义,试改正程序中的错误。(共10分) #include <iostream.h> #include <math.h> #inlcude <string> class CBook{ private: char *p_book; public: p_book=new char[strlen(p_val)+1] CBook(const char *p_val) { p_book = new char[strlen(p_val)]; strcpy(p_book, p_val); } void print() const { cout << p_book << endl; } ~CBook() { delete [] p_book; } }; void main(){ char book_title[60]; CBook *p_book_obj; cout << “Enter book title: ”; cin >> p; CBook abook(p); p_book_obj = &abook; p_book_obj->print(); } 三、根据如下所示程序,回答下列问题(共10分) #include <iostream.h> class CJournal{ public: 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 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” << endl; } }; void main(){ CComputerDesign journal1; CJournal *p_journal; journal1.subscribe(); journal1.read(); // ① p_journal = &journal1; p_journal->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 <iostream> #include <string.h> 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_name=new char[strlen(p_val)+1]; strcpy(p_name,p_val); credit=credit_val; } CCourse:CCourse(const CCourse &r_course){ no=r_course.no; p_name=new char[strlen(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. 为CGoods类增加一个商品总数(int count)数据成员,并增加一个成员函数getCount()获取count的值,编写一个友元函数getName()获取商品名称p_name。做如上修改后,重新实现CGoods类(与第1问相同的不用再重复)。(10分) 3. 为CGoods类定义小于运算符(‘<’)和不小于运算符(‘>=’)两个运算符重载函数。CGoods类对象大小的比较是根据其商品价格(price)的值的大小来实现的。(与第2问相同的不用再重复)(10分) 4. 以CGoods类为基类,派生出服装类CClothes和食品类CFood两个派生类,并在这两个类中分别增加一个表示品牌的指针数据成员(char *p_brand)和表示用途的成员函数(void usedFor()——可分别输出一条表示服装和食品用途的信息)。写出CClothes类和CFood类的完整定义(包括构造、析构和usedFor()成员函数的实现)。(10分) 五、附加题(共30分。注意:确保基本题成绩能达到75分以上,再尝试做附加题!) 1. 在基本题第四题的基础上,在CGoods类增加总商品数(long total_goods)和商品总价格(double total_price)两个数据成员,以及相应的获取这两个数据成员值的成员函数getTotalGoods()和getTotalPrice()。(注意说明数据成员和成员函数的存储类型,以便能够用类名来调用getTotalGoods()和getTotalPrice()这两个函数)。为了能够采用动态联编的方式调用派生类的usedFor()成员函数,应该在CGoods类及其派生类CClothes和CFood类中作何改动? (15分) 2. 编写一个实现两个数交换的函数模板swap,然后使用该函数模板再编写一个对具有n个数组元素(通用类型)的数组采用冒泡排序算法进行排序的函数模板。(15分) 答案 二、 #include <math.h> 改为#include <string.h> p_book = new char[strlen(p_val)]改为p_book = new char[strlen(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 <<Computer Design>> default constructor Subscribing <<Computer Design>> Reading <<Computer Design>> (全部答对得3分,答错或漏答一条输出扣1分) 2. Subscribing <<Computer Design>> Reading paper <<Computer Design>> default destructor Journal default destructor (全部答对得4分,答错或漏答一条输出扣1分) 3. 会出错,因为CJournal中包含有纯虚函数,故CJournal是抽象类,不能定义抽象类对象。 (答对编译会出错得1分,答对原因得2分。) 四、 1. #include <iostream> #include <string.h> 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_name = new char[strlen(p_val)+1]; strcpy(p_name, p_val); credit = credit_val; } CCourse::CCourse(const CCourse &r_course){ no = r_course.no; p_name = new char[strlen(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分,部分正确得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类的析构函数中增加一条: 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分) 3. 在class CCourse定义中增加一条: public: bool operator <(const CCourse &r_course); (答对得2分) 在类外部定义: bool CCourse::operator <(const CCourse &r_course){ if (credit < r_course.credit) return true; else return false; (答对得3分) 在class CCourse定义中增加一条: public: bool operator >=(const CCourse &r_course); (答对得2分) 在类外部定义: bool CCourse::operator >=(const CCourse &r_course){ if (credit >= 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 char[strlen(p_open)+1]; 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 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 char[strlen(p_open)+1]; 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 degree\n"; } (答对得2分) 增加: #include <stdlib.h> 主函数可定义为: void main(){ char choice, instructor[10]; float credit; long id; CCourse *p_course; cout << "Select course:\n"; cout << "1. for High Level Language Programming\n"; cout << "2. for Object Oriented Programming\n"; cin >> choice; cout << "Enter course number: "; cin >> id; cout << "Enter credit: "; cin >> credit; cout << "Enter instructor name: "; cin >> instructor; switch (choice){ case '1': p_course = new CHLP(id, "高级语言程序设计", credit, instructor); break; case '2': p_course = new COOP(id, "面向对象程序设计", credit, instructor); break; default: exit(0); } p_course->studyFor(); delete p_course; } (答对得13分) 2. #include <iostream> using namespace std; template <class T> void swap(T &a, T &b){ T temp; (有)——(无) (高)——矮 、低 ( 前)——( 后 ) ( 出)——( 进、入) temp = a; a = b; b = temp; 杨树高高的——高高的杨树} template <class T> 例一、青+(虫)= 蜻 赶 —干 =( 走)void bubbleSort(T a[], int n){ int i, j; for (i=1; i < n; i++) for (j=0; j < n-i; j++) if (a[j] > a[j+1]) swap(a[j], a[j+1]); } template <class T1> 五拃甸小学 普 琼void print(T1 a[], int n){ for (int i=0; i < n; i++) 走 走之旁(赶 超 起) 禾 禾字旁(秋 秒) 3、日 木 女 王 日 口 4、音 门 日 禾 女 山攵 反文旁(敏 故) 犭反犬旁(猪 狗 猫) cout << a[i] << " "; 一条鱼 一座桥 一头牛 一片叶 一阵风 cout << endl; 扩词,扩句 名(有名)(出名)(名字)(成名)(名气)} void main(){ 两点水:冷、净、凉 雪白的云朵 雪白的棉花 雪白的墙int a[] = {2, 3, 1, 6, 43, 22}; 方 方字旁(放 旅) 石 石字旁(砍 码 ) 1、本册要求背诵的课文如下:(4)、照样子写出来。double b[] = {2.3, 3.2, 1.6, -6.0, 4.3, 2.2}; (23)( )月( )日是国庆节。 ( )月( )日 是妇女节。 print(a, 6); 我家门口有一棵小树。 江上有一座小桥。 (北京)是我国的(首都)。 (五星红旗)是我国的(国旗)。4、给多音字选择正确的音节。 (3)、( )渐渐( )。一条路 一里路 一只鹅 一群鹅 一根木 bubbleSort(a, 6); 五、阅读 。 空—满 干—湿 今—古 闲—忙 天—地《1柳树醒了》、《9两只鸟蛋》、《4春晓、村居》、《13所见、小池》、《14荷叶圆圆》、《16要下雨了》(自选)、《18四个太阳》、《19乌鸦喝水》、《20司马光》、《24画家乡》(自选)、《25快乐的节日》 print(a, 6); 见(听见)吓(吓人)军(军人)弟弟多可爱呀! 大家快来呀! print(b, 6); 6、认真检查写好的句子,发现错别字及时改。 5、根据表达的需要,学会使用逗号、句号、问号和感叹号。8、生字“小魔术”(P111):加一笔:日——(白)(田)(目)(电)(旧)(由)(旦) bubbleSort(b, 6); 我的头发那么长,那么黑。 他的脸那么白那么胖。 print(b, 6); (答对得15分)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服