C 期末考试试卷及答案-2023修改整理_第1页
C 期末考试试卷及答案-2023修改整理_第2页
C 期末考试试卷及答案-2023修改整理_第3页
C 期末考试试卷及答案-2023修改整理_第4页
C 期末考试试卷及答案-2023修改整理_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

千里之行,始于足下让知识带有温度。第第2页/共2页精品文档推荐C期末考试试卷及答案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关键字,是为了提高函数的_______

A.数据封装性

B.可理解性

C.可维护性

D.可重用性

6.函数重载的目的是________

A.实现分享

B.使用便利,提高可读性

C.提高速度

D.削减空间

7.从程序片断:charname[]="C++";course(name);可推断函数course的调

用采纳的是_______

A.传值调用

B.带缺省参数值的函数调用

C.引用调用

D.传址调用

8.用来说明类中公有成员的关键字是________

A.public

B.private

C.protected

D.friend

9.假如一个类的成员函数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.int

B.int*

C.A

D.

A*

12.内存泄漏是指_______

A.内存中的数据浮现走失

B.试图释放一个已经释放了的动态分配的堆内存

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.公有继承的派生类对象可以拜访其基类的________

A.公有成员

B.公有成员及受庇护成员

C.受庇护成员

D.私有成员

18.设置虚基类的目的是________

A.简化程序

B.使程序按动态联编方式运行

C.提高程序运行效率

D.消退二义性

19.下列关于纯虚函数和抽象类的描述中,不正确的是________

A.纯虚函数是一个没有详细实现的虚函数

B.抽象类是包括纯虚函数的类

C.抽象类只能作为基类,其纯虚函数的实现在派生类中给出

D.可以定义一个抽象类的对象

20.关于运算符重载的不正确的描述是________

A.运算符重载函数是友元函数

B.体现了程序设计的多态性

C.增强新的运算符

D.使运算符能对对象操作

二、下面的程序是关于CBook类的一个定义,试改正程序中的错误。(共10分)

#include

#include#inlcude

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;

CBookabook(p);

p_book_obj=

p_book_obj->print();

}

三、按照如下所示程序,回答下列问题(共10分)

#include

classCJournal

{

public:

CJournal(){coutsubscribe();

p_journal->read();

}

1.当程序运行到①处时,写出程序运行的输出结果(3分)

2.当程序结束时,程序会在第1问的基础上增强哪些输出。(4分)

3.若在主函数中定义一个对象CJournaljournal;程序编译时会否出错?为什么?(3分)

四、编程题(共40分)

1.定义一个商品类CGoods,其中包含商品号(longno)、商品名(char*p_name)、商品价格(doubleprice)三个数据成员,以及相应的构造函数、拷贝构造函数、析构函数、打印数据成员的成员函数。(10分)

#include

#include

usingnamespacestd;

classCCourse

{

private:

longno;

char*p_name;

floatcredit;

public:

CCourse(longno_val,charp_val,floatcredit_val);

CCourse(constCCourse

~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

p_name=newchar[strlen(r_course.p_name)+1];

strcpy(p_name,r_course.p_name);

credit=r_course.credit;

}

voidCCourse:print()const

{

cout=’)两个运算符重载函数。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.BDAAC

11-15.CADBB16-20.CADDA

(每小题答对2分,不答0分,答错0分)

二、

#include改为#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->print();

(该对得2分,未改或改错得0分,正确之处该成错误倒扣1分)

三、

1.Journaldefaultconstructor

>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;

}

CCourse::CCourse(constCCourse

p_name=newchar[strlen(r_course.p_name)+1];

strcpy(p_name,r_course.p_name);

credit=r_course.credit;

}

voidCCourse::print()const

{

cout=(constCCourse

(答对得2分)

在类外部定义:

boolCCourse::operator>=(constCCourse&r_course)

{

if(credit>=r_course.credit)

returntrue;

else

returnfalse;

}

(答对得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(){coutchoice;

cout>instructor;

switch(choice)

{

case'1':

p_course=newCHLP(id,"高级语言程序设计",credit,instructor);

break;

case'2':

p_course=newCOOP(id,"面对对象程序设计",credit,instructor);

break;

default:

exit(0);

}

p_

温馨提示

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

评论

0/150

提交评论