书签 分享 收藏 举报 版权申诉 / 17
上传文档赚钱

类型C-期末考试试卷及答案.docx

  • 上传人(卖家):刘殿科
  • 文档编号:5840998
  • 上传时间:2023-05-12
  • 格式:DOCX
  • 页数:17
  • 大小:15.82KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《C-期末考试试卷及答案.docx》由用户(刘殿科)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    期末考试 试卷 答案
    资源描述:

    1、C+期末考试试卷及答案1一、单项选择题(每题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关键字,是为了提

    2、高函数的_ 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. friend9. 如果一个类的成员函数print()不修改类的数据成员值,则应将其声明为 A. void print(

    3、) 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.试图释放一个已经释放了的动态分配

    4、的堆内存 C. 函数中局部变量所占的栈内存没有及时回收 D. 动态分配的堆内存在程序退出后始终被占用 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. 公有继承的派生类对

    5、象可以访问其基类的_A. 公有成员 B. 公有成员及受保护成员 C. 受保护成员 D. 私有成员18. 设置虚基类的目的是_ A. 简化程序 B. 使程序按动态联编方式运行 C. 提高程序运行效率 D. 消除二义性19. 下列关于纯虚函数和抽象类的描述中,不正确的是_ A. 纯虚函数是一个没有具体实现的虚函数B. 抽象类是包括纯虚函数的类 C. 抽象类只能作为基类,其纯虚函数的实现在派生类中给出D. 可以定义一个抽象类的对象20. 关于运算符重载的不正确的描述是_ A. 运算符重载函数是友元函数 B. 体现了程序设计的多态性 C. 增加新的运算符 D. 使运算符能对对象操作二、下面的程序是关于

    6、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; ;void main()char book_title60;CBook

    7、*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 “Journal default destructor” endl; ;cl

    8、ass 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 Designdefault destructor” subscribe();p_j

    9、ournal-read();1.当程序运行到处时,写出程序运行的输出结果 (3分)2. 当程序结束时,程序会在第1问的基础上增加哪些输出。 (4分)3. 若在主函数中定义一个对象CJournal journal;程序编译时会否出错?为什么?(3分)四、编程题(共40分)1. 定义一个商品类CGoods,其中包含商品号(long no)、商品名(char *p_name)、商品价格(double price)三个数据成员,以及相应的构造函数、拷贝构造函数、析构函数、打印数据成员的成员函数。(10分)#include #include using namespace std;class CCour

    10、seprivate: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_val)+1;strcpy(p_name,p_val);credit

    11、=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. 为CGoods类增加一个商品总数(int count)数据成员

    12、,并增加一个成员函数getCount()获取count的值,编写一个友元函数getName()获取商品名称p_name。做如上修改后,重新实现CGoods类(与第1问相同的不用再重复)。(10分)3. 为CGoods类定义小于运算符(=)两个运算符重载函数。CGoods类对象大小的比较是根据其商品价格(price)的值的大小来实现的。(与第2问相同的不用再重复)(10分)4. 以CGoods类为基类,派生出服装类CClothes和食品类CFood两个派生类,并在这两个类中分别增加一个表示品牌的指针数据成员(char *p_brand)和表示用途的成员函数(void usedFor()可分别输出

    13、一条表示服装和食品用途的信息)。写出CClothes类和CFood类的完整定义(包括构造、析构和usedFor()成员函数的实现)。(10分)五、附加题(共30分。注意:确保基本题成绩能达到75分以上,再尝试做附加题!)1. 在基本题第四题的基础上,在CGoods类增加总商品数(long total_goods)和商品总价格(double total_price)两个数据成员,以及相应的获取这两个数据成员值的成员函数getTotalGoods()和getTotalPrice()。(注意说明数据成员和成员函数的存储类型,以便能够用类名来调用getTotalGoods()和getTotalPric

    14、e()这两个函数)。为了能够采用动态联编的方式调用派生类的usedFor()成员函数,应该在CGoods类及其派生类CClothes和CFood类中作何改动? (15分)2. 编写一个实现两个数交换的函数模板swap,然后使用该函数模板再编写一个对具有n个数组元素(通用类型)的数组采用冒泡排序算法进行排序的函数模板。(15分)试卷参考答案一、单项选择题1-5. BDABC 6-10. BDAAC11-15. CADBB 16-20. CADDA(每小题答对2分,不答0分,答错0分)二、#include 改为#include p_book = new charstrlen(p_val)改为p_b

    15、ook = new charstrlen(p_val)+1CBook 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 default constructor Subscribing Reading (全部答对得3分,答错或漏答一条输出扣1分)2. Subscribing Reading paper default de

    16、structor Journal default destructor(全部答对得4分,答错或漏答一条输出扣1分)3. 会出错,因为CJournal中包含有纯虚函数,故CJournal是抽象类,不能定义抽象类对象。(答对编译会出错得1分,答对原因得2分。)四、1. #include #include 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

    17、(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 = r_course.no; p_name = new cha

    18、rstrlen(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定义中增加一条: pr

    19、ivate: 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() re

    20、turn 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分

    21、) 在类外部定义: bool CCourse:operator (const CCourse &r_course) if (credit =(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(

    22、long no_val, char *p_val, float credit_val, char *p_open) : CCourse(no_val, p_val, credit_val) p_openby = new charstrlen(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 : publi

    23、c 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 charstrlen(p_open)+1; strcpy(p_openby, p_open); COOP() delete p_openby; void studyFor() cout Study for object oriented programming endl; ; (答对

    24、得5分,其中构造函数3分,析构函数1分,studyFor()函数1分)五、1. 在class CCourse定义中增加一条: public: virtual void studyFor() cout study for degreen; (答对得2分) 增加: #include 主函数可定义为: void main() char choice, instructor10; float credit; long id; CCourse *p_course; cout Select course:n; cout 1. for High Level Language Programmingn; co

    25、ut choice; cout id; cout credit; cout 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 using namespace std

    26、;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=1; i n; i+)for (j=0; j aj+1)swap(aj, aj+1);template void print(T1 a, int n)for (int i=0; i n; i+)cout ai ;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分)

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:C-期末考试试卷及答案.docx
    链接地址:https://www.163wenku.com/p-5840998.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库