南昌大学C++大作业Word格式文档下载.docx
《南昌大学C++大作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《南昌大学C++大作业Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
《C++程序设计》编程试题
1.
设计一个圆柱体类,定义构造函数初始化圆柱体,定义两个成员函数分别计算它的底面积和体积。
2.
定义一个点类Point,有横坐标x和纵坐标y,定义构造函数初始化点,定义display()函数显示点的坐标。
再定义一个线段类Line,由两个点作为对象成员,定义不同的构造函数初始化线段,定义成员函数计算线段的距离。
3.
编写一个复数类。
实现各种常用构造函数,实现整数,实数向复数的转换函数,实现整数、实数和复数以及复数和复数之间的加、减、乘法运算。
4.
设计一个矩阵类,要求在矩阵类中重载加(+)、减(-)、乘(*)、复值(=)运算,在主函数中定义两个对象,并分别调用重载的运算符。
5.
设计一个基类Shapes,包括成员函数display(),声明为纯虚函数。
由该类派生出两个类:
矩形类Rectangle和圆类Circle,
再由长方形类派生出立方体类Box,由圆类派生出圆柱体类Cylinder。
分别定义display()函数显示图形的主要几何元素(如长宽高半径等),用GetS()计算图形的面积,用GetV计算图形的体积。
在主函数中定义相关的对象并显示相应的内容。
6.
定义一个日期类Cdate.,该类有year,month,day三个私有数据成员。
实现一下功能:
1)定义成员函数display()显示日期;
2)定义成员函数setdate()设置日期;
3)定义默认构造函数设置系统默认日期;
4)重载++运算符。
7.
用类实现一个单链表的操作。
(包括链表的建立,链表的输出,链表的插入和删除操作)
要求独立完成下面的每一道题目。
每一道题均要求写出完整的程序代码,并要求调试运行通过。
不允许有程序代码雷同和抄袭的情况,若代码雷同率超过30%以上的,双方成绩均按不及格处理。
要求递交电子文档和打印纸质文档,由班长统一收取。
递交时间:
#include<
iostream>
#definePI3.14
usingnamespacestd;
classCylinder
{
private:
intradius;
intheight;
public:
Cylinder(intr,inth)
{
radius=r;
height=h;
};
doublearea(){return(PI*radius*radius);
}
doublevolume(){returnPI*radius*radius*height;
voidshow(){cout<
<
"
theareais:
area()<
\n"
thevolumeis:
volume()<
endl;
};
voidmain()
intr,h;
cout<
姓名:
康涛"
学好:
8001613018"
输入r和h"
cin>
>
r>
h;
CylinderCyli1(r,h);
Cyli1.show();
#include<
cmath>
classPoint
{
private:
intx;
inty;
Point(inta,intb){x=a;
y=b;
voiddisplay();
voidPoint:
:
display()
("
x<
"
y<
)"
classLine
Line(inta,intb,intc,intd):
x1(a),y1(b),x2(c),y2(d){}
floatgetdist(){returnsqrt(pow((x1-x2),2)+pow((y1-y2),2));
}
intx1,y1;
intx2,y2;
intmain()
{cout<
Linel(3,4,6,2);
Pointp1(3,4);
Pointp2(6,2);
p1.display();
p2.display();
thedistanceoftowpointsis:
l.getdist()<
return0;
实现各种常用构造函数,实现整数,实数向复数的转换函数,实现整数、实数和复数以及复数和复数之间的加、减、乘法运算
iostream.h>
classComplex
{public:
Complex(){real=0;
imag=0;
}
Complex(doubler){real=r;
}//实数转换为复数的转换构造函数
Complex(doubler,doublei){real=r;
imag=i;
Complexoperator+(Complex&
c2);
//重载+号
Complexoperator+(int&
i);
//复数与实数相加
friendComplexoperator+(int&
Complex&
);
//实数与复数相加
Complexoperator-(Complex&
//重载—号
Complexoperator*(Complex&
//重载*号
voiddisplay_1();
private:
doublereal;
doubleimag;
ComplexComplex:
operator+(Complex&
c)
{returnComplex(real+c.real,imag+c.imag);
operator+(int&
i)
{returnComplex(real+i,imag);
voidComplex:
{cout<
real<
imag<
i)"
i,Complex&
{returnComplex(i+c.real,c.imag);
operator-(Complex&
C2)
ComplexC;
C.real=real-C2.real;
C.imag=imag-C2.imag;
returnC;
}
ComplexComplex:
operator*(Complex&
C.real=real*C2.real-imag*C2.imag;
C.imag=imag*C2.real+real*C2.imag;
voidmain()
{
Complexc1(2,3),c2(8,-6),c3;
inti=5;
c3=c1+c2;
c1="
;
c1.display();
c2="
c2.display();
c1+c2="
c3.display();
c3=i+c1;
i+c1="
c3=c1+i;
c1+i="
c3=c1-c2;
c1-c2="
c3=c1*c2;
c1*c2="
将一个实数转换为复数:
c3=Complex(3.8);
classMatrix
friendostream&
operator<
(ostream&
out,Matrix&
M);
//重载<
运算符
friendistream&
operator>
(istream&
in,Matrix&
//重载>
Matrix(intr,intc);
Matrixoperator+(Matrix&
M);
Matrixoperator-(Matrix&
Matrixoperator*(Matrix&
intGetCounts()
returnrows*cols;
}
introws,cols;
//定义矩阵的行数rows,列数cols
double*m;
//矩阵中实际(物理)按行存放的元素
Matrix:
Matrix(intr,intc)
rows=r,cols=c;
m=newdouble[rows*cols];
istream&
M)//输入流重载
inti;
for(i=0;
i<
M.rows*M.cols;
i++)
in>
*(M.m+i);
returnin;
ostream&
M)//输出流重载
inti,j=0;
i<
i++)
if(j==M.cols)j=0,out<
out<
"
j++;
returnout;
MatrixMatrix:
operator+(Matrix&
M)
MatrixtempM(rows,cols);
rows*cols;
*(tempM.m+i)=*(m+i)+*(M.m+i);
returntempM;
operator-(Matrix&
*(tempM.m+i)=*(m+i)-*(M.m+i);
operator*(Matrix&
inti,j,t,k=0;
i+=cols)
for(j=0;
j<
cols;
j++)
for(t=0,*(tempM.m+k)=0;
t<
t++)
*(tempM.m+k)=*(tempM.m+k)+*(m+i+t)**(M.m+j+t*rows);
k++;
voidmain()
MatrixA(3,3);
MatrixB(3,3);
MatrixC(3,3);
输入第一个矩阵的"
A.GetCounts()<
个数:
A;
输入第二个矩阵的"
B.GetCounts()<
B;
C=A+B;
endl<
矩阵之和:
C<
矩阵之差:
C=A-B;
C=A*B;
矩阵之积:
classShapes
{
virtualvoiddisplay()=0;
classRectangle:
virtualpublicShapes//长方形类
protected:
intx,y;
Rectangle(inta,intb){x=a;
floatGetS_Rectangle(){return(x*y);
virtualvoiddisplay()
cout<
宽:
长:
长方形的面积是:
GetS_Rectangle()<
classCircle:
virtualpublicShapes//圆形类
intr;
Circle(intradius){r=radius;
floatGetS_Circle(){return(PI*r*r);
圆形半径是:
r<
圆形的面积是:
GetS_Circle()<
classBox:
publicRectangle//长方体类
intg;
Box(inta,intb,intgao):
Rectangle(a,b),g(gao){}
floatGetV_Box(){returnRectangle:
GetS_Rectangle()*g;
长方体的高是:
g<
长方体的体积是:
Rectangle:
GetS_Rectangle()*g<
classCylinder:
publicCircle//圆柱体类
inth;
Cylinder(intradious,intheight):
Circle(radious),h(height){}
floatGetV_Cylinder(){returnCircle:
GetS_Circle()*h;
圆柱体的高是:
h<
圆柱体的体积是:
Circle:
GetS_Circle()*h<
RectangleR1(2,3);
R1.display();
CircleC1
(2);
C1.display();
BoxB1(2,3,2);
B1.display();
CylinderCy1(2,3);
Cy1.display();
ctime>
classCdate
Cdate(){year=0;
month=0;
day=0;
Cdate(inty,intm,intd):
year(y),month(m),day(d){}
setdate(int,int,int);
//设置一个时间
Cdateoperator++();
voiddisplay(){cout<
year<
年"
month<
月"
day<
日"
intyear;
intmonth;
intday;
Cdate:
setdate(inty,intm,intd)
year=y;
month=m;
day=d;
CdateCdate:
operator++()
++day;
++month;
++year;
return*this;
Cdatesetdate(2013,9,15);
setdate()设置的时间是:
setdate.display();
//输出设置时间
重载setdate()设置的timeis:
CdateCdat1(2013,9,15);
for(inti=0;
1;
i++)
{
++Cdat1;
Cdat1.display();
}
tm*year;
//设置当前的系统时间
tm*month;
tm*day;
time_tt;
t=time(0);
year=localtime(&
t);
month=localtime(&
day=localtime(&
当前您的电脑系统时间是:
(year->
tm_year+1900)<
<
(month->
tm_mon+1)<
day->
tm_mday<
//输出当前系统时间
typedefintelemtype;
//数据类型模版
classLnode//结点
elemtypedata;
Lnode*next;
/////////////建表
voidcreat_Link(Lnode*&
head)
Lnode*p,*q;
intn;
p=newLnode;
head=p;
输入链表长度:
n;
输入数据:
p->
data;
q=p;
for(inti=1;
=n-1;
p=newLnode;
q->
next=p;
next=NULL;
/////////表的输出
voidoutput_Link(Lnode*&
head)
if(head==NULL)
空链表!
return;
Lno