C++基础经典习题Word格式文档下载.docx
《C++基础经典习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++基础经典习题Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
areais:
sum<
endl;
}
intmain()
Rectanglemyrectangle;
doublex1,y1,x2,y2;
"
Pleaseentertwocoordinate:
;
cin>
>
x1>
y1>
x2>
y2;
myrectangle.getarea(x1,y1,x2,y2);
return0;
4.10
#include<
string>
classData{
voidsetdata(intNewy,intNewm,intNewd);
Data(){
m_year=0;
m_mouth=0;
m_day=0;
}
Data(intyear,intmonth,intday):
m_year(year),m_mouth(month),m_day(day)
{}
voidshowDate()
{
cout<
m_year<
_"
<
m_mouth<
m_day<
~Data()
~Data"
intm_year,m_mouth,m_day;
classPerson{
voidaddperson(stringid,stringname,stringsex,stringidcard,Datadata);
voidshowperson();
~Person()
~person"
stringm_id,m_name,m_sex,m_idcard;
Datam_data;
inlinevoidData:
setdata(intNewy,intNewm,intNewd){
m_year=Newy;
m_mouth=Newm;
m_day=Newd;
voidPerson:
addperson(stringid,stringname,stringsex,stringidcard,Datadata){
m_id=id;
m_name=name;
m_sex=sex;
m_idcard=idcard;
m_data=data;
inlinevoidPerson:
showperson(){
m_id<
m_name<
m_sex<
m_idcard<
m_data.showDate();
Persons;
//Datad;
Datad(1990,4,9);
s.addperson("
1"
"
xcyk"
man"
41209040120"
d);
s.showperson();
4.12
classDatatype{
Datatype(chara,charb)
intsum=(int)a+(int)b;
sum<
endl;
};
Datatype(inta,intb)
intsum=a+b;
(int)sumis"
Datatype(floata,floatb)
floatsum=a+b;
(float)sumis"
inta=1,b=2;
Datatypesum(a,b);
chara1='
A'
b1='
1'
Datatypesum1(a1,b1);
floata2=3.3,b2=1.11;
Datatypesum2(a2,b2);
4.13Circle
classCircle{
public:
//Circle(){};
//Circle(doubleradius):
m_radius(radius){}
voidgetArea(doubleradius);
constdoublepi=3.14;
doublem_radius;
voidCircle:
getArea(doubleradius)
doubleArea=pi*radius*radius;
Areais:
Area<
//Circlec1
(2);
Circlec1;
c1.getArea
(2);
4.14Tree:
classTree{
Tree(){m_ages=0;
voidgrow(intyear);
voidage();
intm_ages;
voidTree:
grow(intyear)
m_ages=year+m_ages;
age()
ageis:
m_ages<
Treemytree;
mytree.grow(5);
mytree.age();
4.20
classComplex{
Complex(doublea,doubleb)
m_a=a;
m_b=b;
Complex(doublea1)
m_a1=a1;
voidadd(Complexx);
voidshow();
doublem_a,m_a1;
doublem_b;
voidComplex:
add(Complexx)
m_a=m_a+x.m_a1;
show()
m_a<
+"
m_b<
i"
Complexc1(3,5);
Complexc2(4.5);
c1.add(c2);
c1.show();
补充题目:
1、定义一个满足如下要求的Date类
(1)用下面的格式输出日期:
日/月/年
(2)可运行在日期上加一天操作(扩展为若干天,正数负数都行)
(3)设置日期
classDate{
Date(){m_year=1993;
m_mouth=10;
m_day=22;
Date(intyear,intmouth,intday):
m_year(year),m_mouth(mouth),m_day(day){};
voidSetdata(intNewy,intNewm,intNewd);
voidAdddata(intAddD);
voidShowdate();
intm_year;
intm_mouth;
intm_day;
voidDate:
Showdate()
/"
Adddata(intAddD)
if(((AddD+m_day)>
30)&
&
(((AddD+m_mouth*30+m_day)<
=360)))
m_mouth=m_mouth+(m_day+AddD)/30;
m_day=(m_day+AddD)%30;
elseif((AddD+m_mouth*30+m_day)>
360)
m_year=m_year+((AddD+m_mouth*30+m_day))/360;
m_mouth=m_mouth+(((AddD+m_mouth*30+m_day)%360)/30);
m_day=m_day+(((AddD+m_mouth*30+m_day)%360)%30);
elseif(AddD+m_day<
30)
m_day=m_day+AddD;
Setdata(intNewy,intNewm,intNewd)
Datec1;
c1.Showdate();
Datec2(100,1,1);
c2.Showdate();
c2.Setdata(1993,10,22);
c2.Adddata(10);
2、以面向对象的概念设计一个类,此类包含3个私有数据,unlead(无铅汽油).Lead(有铅汽油)以及total(当天总收入),无铅汽油的价格是17/公升,有铅汽油的价格是16元/公升,请以构造函数方式建立此值。
试输入某天所加的汽油值,本程序将列出加油站当天的总收入
classStation{
Station(){m_Lead=16;
m_unLead=17;
m_total=0;
voidAddgas(intLkg,intunLkg);
voidShowtotal();
intm_Lead;
intm_unLead;
intm_total;
voidStation:
Addgas(intLkg,intunLkg)
m_total=m_total+m_Lead*Lkg+m_unLead*unLkg;
Showtotal()
totalis:
m_total<
Stationc1;
intLp,unLp;
PleaseenterhowmuchLeapandunLeaphasaddedtoday:
Lp>
unLp;
c1.Addgas(Lp,unLp);
c1.Showtotal();
3、Newdelete与mallocfree的联系与区别?
4、设计一个Bank类,模拟银行某一账号的资金往来账目管理。
Bank类包括私有数据成员top(标记当前账位置,即处理存入和取出的总次数)、date(日期)、money(金额)、rest(余额)。
另有一个构造函数(初始化数据成员)和三个成员函数bankin()(处理存入账),bankout()处理取出账)和disp()(输出明细账)。
提示:
日期使用字符串数组用来存放操作日期;
金额、余额使用整形数组。
输出时将三个数组中的第i个元素在同一行输出。
输出结果:
日期 存入 取出余额
98/07/1220002000
98/07/152001800
5.设计一个立方体类Box,它能计算并输出立方体的体积和表面积。
Box类包含三个私有数据成员a(立方体边长)、volume(体积)和area(表面积),另有两个构造函数以及seta()(设置立方体边长)、getvolume()(计算体积)、getarea()(计算表面积)和disp()(输出结果)。
若对象调用无参构造函数,由seta()设置边长;
若对象调用有参构造函数,则由参数初始化边长。
6.设计一个类Rect,要求有下列成员函数:
a)Move():
从一个位置移动到另一个位置。
b)Size():
改变矩形的大小。
c)Where():
返回矩形左上角的坐标值。
d)Area():
计算矩形面积。
7、编写一个类,实现简单的栈(提示:
用链表结构实现)。
数据的操作按先进后出的(FILO)的顺序。
成员函数为:
Voidqueue:
:
put(intitem);
Intqueue:
get();
数据成员为:
一个指向链首的指针
链表结构为:
StructNode
Inta;
Node*next;
使用对象的过程:
queueque;
que.put(10);
que.put(12);
que.put(14);
cout<
que.get()<
que.get()<
8.
(1)创建一个Employee类,该类中有字符数组,表示姓名,街道地址,市,省和邮政编码。
把表示构造函数,changeName(),Display()的函数原型写在类定义中,构造函数初始化每个成员,Display()函数把完整的对象数据打印出来。
其中的数据成员是保护的,函数是共有的。
(2)修改第一问中的类,将姓名构成类Name,其名和姓在该类中为保护数据成员,其构造函数为接收一个指向完整姓名字符串的指针,Display()函数输出姓名。
然后将Employee类中的姓名成员(字符数组)换成Name类对象。
将所有原型化的函数加上成员函数定义,作为类的内部文件实现文件。
构成完整的类库定义,要求类定义与类的成员函数定义分开。
(3)根据练习2,编制主函数如下,构成一个完整的多文件程序。
voidmain()
Empoloyeeem{"
MarkBrooks"
"
5WestSt"
Revere"
CA"
12290"
charbuffer[255];
cout<
em.Display(buffer)<
em.ChangeName("
RichardVoss"
);