大学C++期末考试试卷_第1页
大学C++期末考试试卷_第2页
大学C++期末考试试卷_第3页
大学C++期末考试试卷_第4页
大学C++期末考试试卷_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精选优质文档-----倾情为你奉上精选优质文档-----倾情为你奉上专心---专注---专业专心---专注---专业精选优质文档-----倾情为你奉上专心---专注---专业一、单项选择题(每题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.从程序片断:charname[]="C++";course(name);可判断函数course的调用采用的是_______A.传值调用B.带缺省参数值的函数调用C.引用调用D.传址调用8.用来说明类中公有成员的关键字是________A.publicB.privateC.protectedD.friend9.如果一个类的成员函数print()不修改类的数据成员值,则应将其声明为A.voidprint()const;B.constvoidprint();C.voidconstprint();D.voidprint(const);10.下列关于构造函数的论述中,不正确的是_______A.构造函数的函数名与类名相同B.构造函数可以设置默认参数C.构造函数的返回类型缺省为int型D.构造函数可以重载11.在程序代码:A::A(inta,int*b){this->x=a;this->y=b;}中,this的类型是______A.intB.int*C.AD.A*12.内存泄漏是指_______A.内存中的数据出现丢失B.试图释放一个已经释放了的动态分配的堆内存C.函数中局部变量所占的栈内存没有及时回收D.动态分配的堆内存在程序退出后始终被占用13.从程序片断:studentzhangsan("张三","M",22);zhangsan.id("");可判断id是一个________A.私有成员数据B.私有成员函数C.公有成员数据D.公有成员函数14.友元函数_______A.可以被声明为constB.没有this指针C.可以用类名或对象名来调用D.只能用对象名来调用15.若一个类的成员函数前用static关键字修饰,则该成员函数________A.可以被声明为constB.没有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>classCBook{private:char*p_book;public: p_book=newchar[strlen(p_val)+1]CBook(constchar*p_val){p_book=newchar[strlen(p_val)];strcpy(p_book,p_val);}voidprint()const{cout<<p_book<<endl;}~CBook(){delete[]p_book;}};voidmain(){charbook_title[60];CBook*p_book_obj;cout<<“Enterbooktitle:”;cin>>p;CBookabook(p);p_book_obj=&abook;p_book_obj->print();}三、根据如下所示程序,回答下列问题(共10分)#include<iostream.h>classCJournal{public:CJournal(){cout<<“Journaldefaultconstructor”<<endl;}virtualvoidsubscribe()=0;voidread(){cout<<“Readpaper”<<endl;}~CJournal(){cout<<“Journaldefaultdestructor”<<endl;}};classCComputerDesign:publicCJournal{public:CComputerDesign(){cout<<“《ComputerDesign》defaultconstructor”<<endl;}virtualvoidsubscribe(){cout<<“Subscribing《ComputerDesign》”<<endl;}voidread(){cout<<“Reading《ComputerDesign》”<<endl;}~CComputerDesign(){cout<<“《ComputerDesign》defaultdestructor”<<endl;}};voidmain(){CComputerDesignjournal1;CJournal*p_journal;journal1.subscribe();journal1.read();//①p_journal=&journal1;p_journal->subscribe();p_journal->read();}1.当程序运行到①处时,写出程序运行的输出结果(3分)2.当程序结束时,程序会在第1问的基础上增加哪些输出。(4分)3.若在主函数中定义一个对象CJournaljournal;程序编译时会否出错?为什么?(3分)四、编程题(共40分)1.定义一个商品类CGoods,其中包含商品号(longno)、商品名(char*p_name)、商品价格(doubleprice)三个数据成员,以及相应的构造函数、拷贝构造函数、析构函数、打印数据成员的成员函数。(10分)#include<iostream>#include<string.h>usingnamespacestd;classCCourse{private: longno; char*p_name; floatcredit;public: CCourse(longno_val,charp_val,floatcredit_val); CCourse(constCCourse&r_course); ~CCourse(){deletep_name;} voidprint()const;};CCourse:CCourse(longno_val,charp_val,floatcredit_val) { no=no_val; p_name=newchar[strlen(p_val)+1]; strcpy(p_name,p_val); credit=credit_val; }CCourse:CCourse(constCCourse&r_course) { no=r_course.no; p_name=newchar[strlen(r_course.p_name)+1]; strcpy(p_name,r_course.p_name); credit=r_course.credit; } voidCCourse:print()const { cout<<"Coursenumber"<<no<<endl; cout<<"Coursename"<<p_name<<endl; cout<<"Coursecredit"<<credit<<endl; }2.为CGoods类增加一个商品总数(intcount)数据成员,并增加一个成员函数getCount()获取count的值,编写一个友元函数getName()获取商品名称p_name。做如上修改后,重新实现CGoods类(与第1问相同的不用再重复)。(10分)3.为CGoods类定义小于运算符(‘<’)和不小于运算符(‘>=’)两个运算符重载函数。CGoods类对象大小的比较是根据其商品价格(price)的值的大小来实现的。(与第2问相同的不用再重复)(10分)4.以CGoods类为基类,派生出服装类CClothes和食品类CFood两个派生类,并在这两个类中分别增加一个表示品牌的指针数据成员(char*p_brand)和表示用途的成员函数(voidusedFor()——可分别输出一条表示服装和食品用途的信息)。写出CClothes类和CFood类的完整定义(包括构造、析构和usedFor()成员函数的实现)。(10分)五、附加题(共30分。注意:确保基本题成绩能达到75分以上,再尝试做附加题!)1.在基本题第四题的基础上,在CGoods类增加总商品数(longtotal_goods)和商品总价格(doubletotal_price)两个数据成员,以及相应的获取这两个数据成员值的成员函数getTotalGoods()和getTotalPrice()。(注意说明数据成员和成员函数的存储类型,以便能够用类名来调用getTotalGoods()和getTotalPrice()这两个函数)。为了能够采用动态联编的方式调用派生类的usedFor()成员函数,应该在CGoods类及其派生类CClothes和CFood类中作何改动?(15分)2.编写一个实现两个数交换的函数模板swap,然后使用该函数模板再编写一个对具有n个数组元素(通用类型)的数组采用冒泡排序算法进行排序的函数模板。(15分)一、单项选择题1-5.BDABC6-10.BDAAC11-15.CADBB16-20.CADDA(每小题答对2分,不答0分,答错0分)二、#include<math.h>改为#include<string.h>p_book=newchar[strlen(p_val)]改为p_book=newchar[strlen(p_val)+1]CBookabook;改为CBookabook(p);p_book_obj=abook改为p_book_obj=&abook;p_book_obj.print()改为p_book_obj->print();(该对得2分,未改或改错得0分,正确之处该成错误倒扣1分)三、1.Journaldefaultconstructor<<ComputerDesign>>defaultconstructorSubscribing<<ComputerDesign>>Reading<<ComputerDesign>>(全部答对得3分,答错或漏答一条输出扣1分)2.Subscribing<<ComputerDesign>>Readingpaper<<ComputerDesign>>defaultdestructorJournaldefaultdestructor(全部答对得4分,答错或漏答一条输出扣1分)3.会出错,因为CJournal中包含有纯虚函数,故CJournal是抽象类,不能定义抽象类对象。(答对编译会出错得1分,答对原因得2分。)四、1.#include<iostream>#include<string.h>usingnamespacestd;classCCourse{private:longno;char*p_name;floatcredit;public:CCourse(longno_val,char*p_val,floatcredit_val);CCourse(constCCourse&r_course);~CCourse(){deletep_name;}voidprint()const;};CCourse::CCourse(longno_val,char*p_val,floatcredit_val){no=no_val;p_name=newchar[strlen(p_val)+1];strcpy(p_name,p_val);credit=credit_val;}CCourse::CCourse(constCCourse&r_course){no=r_course.no;p_name=newchar[strlen(r_course.p_name)+1];strcpy(p_name,r_course.p_name);credit=r_course.credit;}voidCCourse::print()const{cout<<"Coursenumber:"<<no<<endl;cout<<"Coursename:"<<p_name<<endl;cout<<"Coursecredit:"<<credit<<endl;}(数据成员定义正确得2分,部分正确得1分,不正确得0分每个成员函数定义正确得2分,每个成员函数有小错误扣1分,完全不正确不得分)2.在classCCourse定义中增加一条:private:staticinttotal_course;(答对得1分,未加static得0分)在类外部增加一条:intCCourse::total_course=0;(答对得1分,答错或漏答得0分)在CCourse类的构造函数中增加一条:total_course++;(答对得1分)在CCourse类的拷贝构造函数中增加一条:total_course++;(答对得1分)在CCourse类的析构函数中增加一条:total_course--;(答对得1分)在classCCourse定义中增加一条:public:staticgetTotalCourse(){returntotal_course;}(答对得2分,未加static得1分)在classCCourse定义中增加一条:friendchar*getCourseName(constCCourse&r_course);(答对得1分,未加friend得0分)在类外部定义:char*getCourseName(constCCourse&r_course){returnr_course.p_name;(答对得2分)3.在classCCourse定义中增加一条:public:booloperator<(constCCourse&r_course);(答对得2分)在类外部定义:boolCCourse::operator<(constCCourse&r_course){if(credit<r_course.credit)returntrue;elsereturnfalse;(答对得3分)在classCCourse定义中增加一条:public:booloperator>=(constCCourse&r_course);(答对得2分)在类外部定义:boolCCourse::operator>=(constCCourse&r_course){if(credit>=r_course.credit)returntrue;elsereturnfalse;}(答对得3分)4.classCHLP:publicCCourse{private:char*p_openby;public:CHLP(longno_val,char*p_val,floatcredit_val,char*p_open):CCourse(no_val,p_val,credit_val){p_openby=newchar[strlen(p_open)+1];strcpy(p_openby,p_open);}~CHLP(){deletep_openby;}voidstudyFor(){cout<<"Studyforstructuredprogramming"<<endl;}};(答对得5分,其中构造函数3分,析构函数1分,studyFor()函数1分)classCOOP:publicCCourse{private:char*p_openby;public:COOP(longno_val,char*p_val,floatcredit_val,char*p_open):CCourse(no_val,p_val,credit_val){p_openby=newchar[strlen(p_open)+1];strcpy(p_openby,p_open);}~COOP(){deletep_openby;}voidstudyFor(){cout<<"Studyforobjectorientedprogramming"<<endl;}};(答对得5分,其中构造函数3分,析构函数1分,studyFor()函数1分)五、1.在classCCourse定义中增加一条:public:virtualvoidstudyFor(){cout<<"studyfordegree\n";}(答对得2分)增加:#include<stdlib.h>主函数可定义为:voidmain(){charchoice,instructor[10];floatcredit;longid;CCourse*p_course;cout<<"Selectcourse:\n";cout<<"1.forHighLevelLanguageProgramming\n";cout<<"2.forObjectOrientedProgramming\n";cin>>choice;co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论