大学C++期末考试试卷(含答案).doc
《大学C++期末考试试卷(含答案).doc》由会员分享,可在线阅读,更多相关《大学C++期末考试试卷(含答案).doc(11页珍藏版)》请在咨信网上搜索。
C++突击题 2012-06-08 一、单项选择题(每题2分,共40分) 1. ______不是属于面向对象程序设计的特性 A. 抽象性 B. 数据相关性 C. 多态性 D. 继承性 2. 将对某一类数据的处理算法应用到另一类数据的处理中,要用到C++的______ A. 类 B. 虚函数 C. 运算符重载 D. 模板 3. C++与C语言最根本的不同之处在于_______ A. 使用了类 B. 能够实现变量自动初始化 C. 支持软件重用 D. 支持接口重用 4. 动态内存分配的主要目的是_______ A. 使程序按动态联编方式运行 B. 正确合理的使用内存 C. 提高程序的运行速度 D. 提高程序的可维护性 5. 在C++函数的形参前加const关键字,是为了提高函数的_______ A. 数据封装性 B. 可理解性 C. 可维护性 D. 可重用性 6. 函数重载的目的是________ A. 实现共享 B. 使用方便,提高可读性 C. 提高速度 D. 减少空间 7. 从程序片断:char name[] = "C++"; course(name);可判断函数course的调用采用的是_______ A. 传值调用 B. 带缺省参数值的函数调用 C. 引用调用 D. 传址调用 8. 用来说明类中公有成员的关键字是________ A. public B. private C. protected D. friend 9. 如果一个类的成员函数print()不修改类的数据成员值,则应将其声明为 A. void print() const; B. const void print(); C. void const print(); D. void print(const); 10. 下列关于构造函数的论述中,不正确的是_______ A. 构造函数的函数名与类名相同 B. 构造函数可以设置默认参数 C. 构造函数的返回类型缺省为int型 D. 构造函数可以重载 11. 在程序代码:A::A(int a, int *b) { this->x = a; this->y = b; }中,this的类型是______ A. int B. int * C. A D. A * 12. 内存泄漏是指_______ A. 内存中的数据出现丢失 B.试图释放一个已经释放了的动态分配的堆内存 C. 函数中局部变量所占的栈内存没有及时回收 D. 动态分配的堆内存在程序退出后始终被占用 13. 从程序片断:student zhangsan("张三","M",22); zhangsan.id("2005131000");可判断id是一个________ A. 私有成员数据 B. 私有成员函数 C. 公有成员数据 D. 公有成员函数 14. 友元函数_______ A. 可以被声明为const B. 没有this指针 C. 可以用类名或对象名来调用 D. 只能用对象名来调用 15. 若一个类的成员函数前用static关键字修饰,则该成员函数________ A. 可以被声明为const B. 没有this指针 C. 可以访问该类的所有成员 D. 只能用对象名来调用 16. C++是用_______实现接口重用的 A. 内联函数 B. 虚函数 C. 重载函数 D. 模板函数 17. 公有继承的派生类对象可以访问其基类的________ A. 公有成员 B. 公有成员及受保护成员 C. 受保护成员 D. 私有成员 18. 设置虚基类的目的是________ A. 简化程序 B. 使程序按动态联编方式运行 C. 提高程序运行效率 D. 消除二义性 19. 下列关于纯虚函数和抽象类的描述中,不正确的是________ A. 纯虚函数是一个没有具体实现的虚函数 B. 抽象类是包括纯虚函数的类 C. 抽象类只能作为基类,其纯虚函数的实现在派生类中给出 D. 可以定义一个抽象类的对象 20. 关于运算符重载的不正确的描述是________ A. 运算符重载函数是友元函数 B. 体现了程序设计的多态性 C. 增加新的运算符 D. 使运算符能对对象操作 二、下面的程序是关于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分) 一、单项选择题 1-5. BDABC 6-10. BDAAC 11-15. CADBB 16-20. CADDA (每小题答对2分,不答0分,答错0分) 二、 #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++) cout << a[i] << " "; 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分) -11-- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 C+ 期末考试 试卷 答案
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文