C++课后习题答案Word格式文档下载.docx
- 文档编号:19411855
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:18
- 大小:17.67KB
C++课后习题答案Word格式文档下载.docx
《C++课后习题答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++课后习题答案Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
floatgetRadius()const;
floatarea()const;
operator<
Circle&
floatradius;
//Cylinder.h
Circle.h"
#ifndefCYLINDER_H
#defineCYLINDER_H
classCylinder;
constCylinder&
classCylinder:
publicCircle
Cylinder(floatx=0,floaty=0,floatr=0,floath=0);
voidsetHeight(float);
floatgetHeight()const;
floatarea()const;
floatvolume()const;
friendostream&
(ostream&
floatheight;
//Point.cpp
#include<
iostream>
#include"
Point:
:
Point(floata,floatb)
{x=a;
y=b;
voidPoint:
setPoint(floata,floatb)
output,constPoint&
p)
{output<
"
["
p.getX()<
"
p.getY()<
]"
endl;
returnoutput;
//Circle.cpp
Circle:
Circle(floata,floatb,floatr):
Point(a,b),radius(r){}
voidCircle:
setRadius(floatr)
{radius=r;
floatCircle:
getRadius()const
{returnradius;
area()const
{returnfloat(3.14159*radius*radius);
output,Circle&
c)
Center=["
c.getX()<
c.getY()<
],r="
c.getRadius()<
area="
c.area()<
//Cylinder.cpp
Cylinder.h"
Cylinder:
Cylinder(floata,floatb,floatr,floath):
Circle(a,b,r),height(h){}
voidCylinder:
setHeight(floath){height=h;
floatCylinder:
getHeight()const{returnheight;
{returnfloat(2*Circle:
area()+2*3.14159*radius*height);
volume()const
{returnCircle:
area()*height;
output,constCylinder&
cy)
cy.getX()<
cy.getY()<
cy.getRadius()<
h="
cy.getHeight()
\narea="
cy.area()<
volume="
cy.volume()<
//main.cpp
voidmain()
{Cylindercy1(5,4,2,10);
cout<
\noriginalcylinder:
\nx="
cy1.getX()<
y="
cy1.getY()<
r="
cy1.getRadius()<
cy1.getHeight()<
cy1.area()
cy1.volume()<
cy1.setHeight(6);
cy1.setRadius(4);
cy1.setPoint(5,5);
\nnewcylinder:
\n"
cy1;
Point&
pRef=cy1;
\npRefasapoint:
pRef;
Circle&
cRef=cy1;
\ncRefasaCircle:
cRef;
3.在例12.3的基础上作以下修改,并作出必要的市讨论
1>
把构造函数修改为带参数的函数,在建立对象时初始化。
#include<
Point(doublea,doubleb):
x(a),y(b){}
~Point(){cout<
executingPointdestructor"
private:
doublex;
doubley;
Circle(doublea,doubleb,doubler):
~Circle(){cout<
executingCircledestructor"
doubleradius;
intmain()
{Point*p=newCircle(2,1,4);
deletep;
return0;
2>
先不将析构函数声明为virtual,在main函数中另设一个指向Circle类对象的指针变量.......
Circle*pt=newCircle(2.5,1.8,4.5);
deletept;
3>
不作第
(2)点的修改而将析构函数声明为virtual,运行程序,分析结果
virtual~Point(){cout<
4.写一个程序,定义抽象基类Shape,由它派生出3个派生类:
Circle,Rectangle,Triangle.......
classShape
virtualdoublearea()const=0;
publicShape
Circle(doubler):
radius(r){}
virtualdoublearea()const{return3.14159*radius*radius;
classRectangle:
Rectangle(doublew,doubleh):
width(w),height(h){}
virtualdoublearea()const{returnwidth*height;
}
doublewidth,height;
classTriangle:
Triangle(doublew,doubleh):
width(w),height(h){}
virtualdoublearea()const{return0.5*width*height;
voidprintArea(constShape&
s)
{cout<
s.area()<
{
Circlecircle(12.6);
areaofcircle="
;
printArea(circle);
Rectanglerectangle(4.5,8.4);
areaofrectangle="
printArea(rectangle);
Triangletriangle(4.5,8.4);
areaoftriangle="
printArea(triangle);
5.写一个程序,定义抽象基类Shape,由它派生出5个派生类:
Circle,Square,Rectangle,Trapezoid,Triangle.......
radius(r){}
classSquare:
Square(doubles):
side(s){}
virtualdoublearea()const{returnside*side;
doubleside;
classTrapezoid:
Trapezoid(doublet,doubleb,doubleh):
top(t),bottom(t),height(h){}
virtualdoublearea()const{return0.5*(top+bottom)*height;
doubletop,bottom,height;
Squaresquare(3.5);
Trapezoidtrapezoid(2.0,4.5,3.2);
Shape*pt[5]={&
circle,&
square,&
rectangle,&
trapezoid,&
triangle};
doubleareas=0.0;
for(inti=0;
i<
5;
i++)
areas=areas+pt[i]->
area();
totolofallareas="
areas<
第13章输入输出流
1.输入三角形的三边a,b,c,计算三角形的面积的公式是.....
cmath>
{doublea,b,c,s,area;
pleaseinputa,b,c:
cin>
>
a>
b>
c;
if(a+b<
=c)
cerr<
a+b<
=c,error!
elseif(b+c<
=a)
b+c<
=a,error!
elseif(c+a<
=b)
c+a<
=b,error!
else
{s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
area="
area<
2.从键盘输入一批数值,要求保留3位小数,在输出时上下行小数点对齐。
iomanip>
{floata[5];
inputdata:
a[i];
setiosflags(ios:
fixed)<
setprecision
(2);
for(i=0;
setw(10)<
a[i]<
3.编程序,在显示屏上显示一个由字母B组成的三角形。
voidmain(){
inti,j,k;
8;
i++){
for(j=0;
j<
7-i;
j++)
"
for(k=0;
k<
2*i+1;
k++)
B"
4.建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作:
fstream>
voidfun1()
{inta[10];
ofstreamoutfile1("
f1.dat"
),outfile2("
f2.dat"
if(!
outfile1)
{cerr<
openf1.daterror!
exit
(1);
outfile2)
openf2.daterror!
enter10integernumbers:
10;
{cin>
outfile1<
outfile2<
outfile1.close();
outfile2.close();
voidfun2()
{ifstreaminfile("
infile)
ofstreamoutfile("
ios:
app);
outfile)
inta;
{infile>
a;
outfile<
a<
infile.close();
outfile.close();
voidfun3()
inta[20];
inti,j,t;
20;
i++)
infile>
19;
19-i;
if(a[j]>
a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
out);
datainf2.dat:
for(i=0;
{outfile<
{fun1();
fun2();
fun3();
5.编程序实现以下功能
structstaff
{intnum;
charname[20];
intage;
doublepay;
{staffstaf[7]={2101,"
Li"
34,1203,2104,"
Wang"
23,674.5,2108,"
Fun"
54,778,
3006,"
Xue"
45,476.5,5101,"
Ling"
39,656.6},staf1;
fstreamiofile("
staff.dat"
in|ios:
out|ios:
binary);
iofile)
openerror!
abort();
inti,m,num;
Fivestaff:
staf[i].num<
staf[i].name<
staf[i].age<
staf[i].pay<
iofile.write((char*)&
staf[i],sizeof(staf[i]));
pl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课后 习题 答案