大学C++期末考试试卷(含答案)Word格式.doc
- 文档编号:6958336
- 上传时间:2023-05-07
- 格式:DOC
- 页数:11
- 大小:66KB
大学C++期末考试试卷(含答案)Word格式.doc
《大学C++期末考试试卷(含答案)Word格式.doc》由会员分享,可在线阅读,更多相关《大学C++期末考试试卷(含答案)Word格式.doc(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("
2005131000"
);
可判断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>
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分)
classCJournal
CJournal(){cout<
“Journaldefaultconstructor”<
virtualvoidsubscribe()=0;
voidread(){cout<
“Readpaper”<
~CJournal(){cout<
“Journaldefaultdestructor”<
classCComputerDesign:
publicCJournal
CComputerDesign(){cout<
“《ComputerDesign》defaultconstructor”<
virtualvoidsubscribe(){cout<
“Subscribing《ComputerDesign》”<
voidread(){cout<
“Reading《ComputerDesign》”<
~CComputerDesign(){cout<
“《ComputerDesign》defaultdestructor”<
CComputerDesignjournal1;
CJournal*p_journal;
journal1.subscribe();
journal1.read();
//①
p_journal=&
journal1;
p_journal->
subscribe();
read();
1.当程序运行到①处时,写出程序运行的输出结果(3分)
2.当程序结束时,程序会在第1问的基础上增加哪些输出。
(4分)
3.若在主函数中定义一个对象CJournaljournal;
程序编译时会否出错?
为什么?
(3分)
四、编程题(共40分)
1.定义一个商品类CGoods,其中包含商品号(longno)、商品名(char*p_name)、商品价格(doubleprice)三个数据成员,以及相应的构造函数、拷贝构造函数、析构函数、打印数据成员的成员函数。
(10分)
iostream>
string.h>
usingnamespacestd;
classCCourse
longno;
char*p_name;
floatcredit;
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(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;
Coursename"
p_name<
Coursecredit"
credit<
2.为CGoods类增加一个商品总数(intcount)数据成员,并增加一个成员函数getCount()获取count的值,编写一个友元函数getName()获取商品名称p_name。
做如上修改后,重新实现CGoods类(与第1问相同的不用再重复)。
3.为CGoods类定义小于运算符(‘<
’)和不小于运算符(‘>
=’)两个运算符重载函数。
CGoods类对象大小的比较是根据其商品价格(price)的值的大小来实现的。
(与第2问相同的不用再重复)(10分)
4.以CGoods类为基类,派生出服装类CClothes和食品类CFood两个派生类,并在这两个类中分别增加一个表示品牌的指针数据成员(char*p_brand)和表示用途的成员函数(voidusedFor()——可分别输出一条表示服装和食品用途的信息)。
写出CClothes类和CFood类的完整定义(包括构造、析构和usedFor()成员函数的实现)。
五、附加题(共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.BDAAC
11-15.CADBB16-20.CADDA
(每小题答对2分,不答0分,答错0分)
二、
改为#include<
p_book=newchar[strlen(p_val)]改为p_book=newchar[strlen(p_val)+1]
CBookabook;
改为CBookabook(p);
p_book_obj=abook改为p_book_obj=&
p_book_obj.print()改为p_book_obj->
(该对得2分,未改或改错得0分,正确之处该成错误倒扣1分)
三、
1.Journaldefaultconstructor
<
ComputerDesign>
defaultconstructor
Subscribing<
Reading<
(全部答对得3分,答错或漏答一条输出扣1分)
2.Subscribing<
Readingpaper
defaultdestructor
Journaldefaultdestructor
(全部答对得4分,答错或漏答一条输出扣1分)
3.会出错,因为CJournal中包含有纯虚函数,故CJournal是抽象类,不能定义抽象类对象。
(答对编译会出错得1分,答对原因得2分。
四、
1.#include<
#include<
usingnamespacestd;
classCCourse
{
private:
longno;
char*p_name;
floatcredit;
public:
CCourse(longno_val,char*p_val,floatcredit_val);
CCourse(constCCourse&
~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;
}
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:
cout<
"
Coursenumber:
<
no<
Coursename:
p_name<
Coursecredit:
credit<
(数据成员定义正确得2分,部分正确得1分,不正确得0分
每个成员函数定义正确得2分,每个成员函数有小错误扣1分,完全不正确不得分)
2.在classCCourse定义中增加一条:
private:
staticinttotal_course;
(答对得1分,未加static得0分)
在类外部增加一条:
intCCourse:
total_course=0;
(答对得1分,答错或漏答得0分)
在CCourse类的构造函数中增加一条:
total_course++;
(答对得1分)
在CCourse类的拷贝构造函数中增加一条:
(答对得1分)
在CCourse类的析构函数中增加一条:
total_course--;
在classCCourse定义中增加一条:
public:
staticgetTotalCourse(){returntotal_course;
(答对得2分,未加static得1分)
friendchar*getCourseName(constCCourse&
(答对得1分,未加friend得0分)
在类外部定义:
char*getCourseName(constCCourse&
{
returnr_course.p_name;
(答对得2分)
3.在classCCourse定义中增加一条:
booloperator<
(constCCourse&
boolCCourse:
operator<
{
if(credit<
r_course.credit)
returntrue;
else
returnfalse;
(答对得3分)
在classCCourse定义中增加一条:
booloperator>
=(constCCourse&
(答对得2分)
operator>
if(credit>
=r_course.credit)
}
4.
classCHLP:
publicCCourse
char*p_openby;
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"
(答对得5分,其中构造函数3分,析构函数1分,studyFor()函数1分)
classCOOP:
COOP(longno_val,char*p_val,floatcredit_val,char*p_open):
~
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 C+ 期末考试 试卷 答案