深圳大学期末考试试卷编程题Word文件下载.doc
《深圳大学期末考试试卷编程题Word文件下载.doc》由会员分享,可在线阅读,更多相关《深圳大学期末考试试卷编程题Word文件下载.doc(4页珍藏版)》请在冰点文库上搜索。
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()成员函数的实现)。
二、下面的程序是关于CComplex类的一个定义,试改正程序中出现的5处错误。
classCComplex
doublereal=0.0,image;
CComplex(doublea=0.0,doubleb=0.0){real=a;
image=b;
staticdoublegetReal()const{returnreal;
intgetImage()const{returnimage;
CComplex&
operator+(constCComplex&
r_x,constCComplex&
r_y);
r_y)
CComplextemp;
temp.real=r_x.real+r_y.image;
returntemp;
CComplexa(3.0,4.0),b(5.0),c;
c=a+b;
c.getReal();
c.getImage();
错误为:
第5行,real=0.0,改为real,
第8行,staticdoublegetReal()改为doublegetReal()
第9行,intgetImage()改为doublegetImage()
第10行,CComplex&
operator+改为friendCComplexoperator+
第12行,CComplex&
operator+改为CComplexoperator+
protected:
staticintcount;
CBook(){count++;
cout<
“Bookconstructorcalled”<
count<
virtualvoidorder()=0;
“Readbook”<
virtual~CBook(){cout<
“Bookdestructorcalled”<
count--;
staticintgetCount(){returncount;
intCBook:
:
count=0;
classCTextBook:
publicCBook
CTextBook(){cout<
“Textbookconstructorcalled”<
voidorder(){cout<
“Ordertextbook”<
“Readtextbook”<
~CTextBook(){cout<
“Textbookdestructorcalled”<
CTextBookoop;
CBook*p_book;
oop.order();
oop.read();
cout<
CTextBook:
getCount()<
p_book=newCTextBook;
p_book->
order();
deletep_book;
1当程序运行到①处时,写出程序运行的输出结果(3分)
2当程序结束时,程序会在第1问的基础上增加哪些输出。
(5分)
3若在主函数中定义一个对象CBookbook;
(2分)
1.定义一个课程类CCourse,其中包含课程号(longno)、课程学分(floatcredit)两个数据成员,以及相应的构造函数和打印数据成员的成员函数print()。
(8分)
2.为CCourse类增加一个课程总数(inttotal_course)数据成员,并增加一个成员函数getTotalCourse()获取total_course的值,编写一个友元函数getCourseNo()获取课程号no。
做如上修改后,重新实现CCourse类(与第1问相同的不用再重复,注意说明数据成员和成员函数的存储类型,以便能够用类名来调用getTotalCourse())。
3.为CCourse类定义小于运算符(‘<
’)运算符重载函数。
CCourse类对象大小的比较是根据其课程学分(credit)的值的大小来实现的。
(与第2问相同的不用再重复)(5分)
4.以CCourse类为基类,派生出面向对象程序设计课程类COOP,并在该类中增加一个表示开课单位的指针数据成员(char*p_openby)和根据学生学号判断能否选课的成员函数boolselect(constchar*p_xh)(只有学号前4位为2006的学生可选面向对象程序设计课程)。
写出COOP类的完整定义(包括构造、拷贝构造、赋值运算符重载、析构和select()成员函数的实现)。
(17分)
《面向对象程序设计》试卷A卷第4页共4页