南昌大学C++大作业.docx

上传人:b****5 文档编号:7601571 上传时间:2023-01-25 格式:DOCX 页数:21 大小:110.38KB
下载 相关 举报
南昌大学C++大作业.docx_第1页
第1页 / 共21页
南昌大学C++大作业.docx_第2页
第2页 / 共21页
南昌大学C++大作业.docx_第3页
第3页 / 共21页
南昌大学C++大作业.docx_第4页
第4页 / 共21页
南昌大学C++大作业.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

南昌大学C++大作业.docx

《南昌大学C++大作业.docx》由会员分享,可在线阅读,更多相关《南昌大学C++大作业.docx(21页珍藏版)》请在冰豆网上搜索。

南昌大学C++大作业.docx

南昌大学C++大作业

软件学院大作业任务书

课程名称:

C++程序设计

题目:

C++综合编程(面向对象)

专业:

计算机网络技术

班级:

131

学号:

8001613

学生姓名:

完成人数:

起讫日期:

2014.6.3

任课教师:

李荣鑫职称:

教师

部分管主任:

完成时间:

2014.6.9

说明

1.本任务书由任课教师填写后,下达到学生。

2.任务完成后,任课教师需填写小结表。

3.任务书、学生成绩与学生完成后的大作业(纸质和电子两种)一并报送各教学研究部审核后转教务办。

4.另附一份全班大作业总结

大作业的要求和内容:

(包括题目选择范围、技术要求、递交时间、考核方法等)

1.要求独立完成下面的每一道题目。

(题目附后面)

2.每一道题均要求写出完整的程序代码,并要求调试运行通过。

程序要有输入和输出。

并将程序运行结果的窗口截屏(用Alt+Prt键),粘贴(用Ctrl+V键)到程序代码的后面。

3.不允许有程序代码雷同和抄袭的情况,若代码雷同率超过30%以上的,双方成绩均按不及格处理。

4.要求递交电子文档和打印纸质文档,由班长统一收取。

5.递交时间:

2014年6月12日之前。

教师小结:

 

成绩:

教师签名:

教研部负责人:

学生姓名:

康涛

《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.      用类实现一个单链表的操作。

(包括链表的建立,链表的输出,链表的插入和删除操作)

 

大作业的要求和内容:

(包括题目选择范围、技术要求、递交时间、考核方法等)

1. 要求独立完成下面的每一道题目。

(题目附后面)

2. 每一道题均要求写出完整的程序代码,并要求调试运行通过。

程序要有输入和输出。

并将程序运行结果的窗口截屏(用Alt+Prt键),粘贴(用Ctrl+V键)到程序代码的后面。

3. 不允许有程序代码雷同和抄袭的情况,若代码雷同率超过30%以上的,双方成绩均按不及格处理。

4. 要求递交电子文档和打印纸质文档,由班长统一收取。

递交时间:

2014年6月12日之前。

1.      设计一个圆柱体类,定义构造函数初始化圆柱体,定义两个成员函数分别计算它的底面积和体积。

#include

#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:

"<

"<

};

voidmain()

{

intr,h;

cout<<"姓名:

康涛"<

cout<<"学好:

8001613018"<

cout<<"输入r和h"<

cin>>r>>h;

CylinderCyli1(r,h);

Cyli1.show();

}

2.      定义一个点类Point,有横坐标x和纵坐标y,定义构造函数初始化点,定义display()函数显示点的坐标。

再定义一个线段类Line,由两个点作为对象成员,定义不同的构造函数初始化线段,定义成员函数计算线段的距离。

#include

#include

usingnamespacestd;

classPoint

{

private:

intx;

inty;

public:

Point(inta,intb){x=a;y=b;};

voiddisplay();

};

voidPoint:

:

display()

{

cout<<"("<

}

classLine

{

public:

Line(inta,intb,intc,intd):

x1(a),y1(b),x2(c),y2(d){}

floatgetdist(){returnsqrt(pow((x1-x2),2)+pow((y1-y2),2));}

private:

intx1,y1;

intx2,y2;

};

intmain()

{cout<<"姓名:

康涛"<

cout<<"学好:

8001613018"<

Linel(3,4,6,2);

Pointp1(3,4);

Pointp2(6,2);

p1.display();

p2.display();

cout<<"thedistanceoftowpointsis:

"<

cout<

return0;

}

3.      编写一个复数类。

实现各种常用构造函数,实现整数,实数向复数的转换函数,实现整数、实数和复数以及复数和复数之间的加、减、乘法运算

#include

classComplex

{public:

Complex(){real=0;imag=0;}

Complex(doubler){real=r;imag=0;}//实数转换为复数的转换构造函数

Complex(doubler,doublei){real=r;imag=i;}

Complexoperator+(Complex&c2);//重载+号

Complexoperator+(int&i);//复数与实数相加

friendComplexoperator+(int&,Complex&);//实数与复数相加

Complexoperator-(Complex&c2);//重载—号

Complexoperator*(Complex&c2);//重载*号

voiddisplay();

voiddisplay_1();

private:

doublereal;

doubleimag;

};

ComplexComplex:

:

operator+(Complex&c)

{returnComplex(real+c.real,imag+c.imag);}

ComplexComplex:

:

operator+(int&i)

{returnComplex(real+i,imag);}

voidComplex:

:

display()

{cout<<"("<

Complexoperator+(int&i,Complex&c)

{returnComplex(i+c.real,c.imag);}

ComplexComplex:

:

operator-(Complex&C2)

{

ComplexC;

C.real=real-C2.real;

C.imag=imag-C2.imag;

returnC;

}

ComplexComplex:

:

operator*(Complex&C2)

{

ComplexC;

C.real=real*C2.real-imag*C2.imag;

C.imag=imag*C2.real+real*C2.imag;

returnC;

}

voidmain()

{

cout<<"姓名:

康涛"<

cout<<"学好:

8001613018"<

Complexc1(2,3),c2(8,-6),c3;

inti=5;

c3=c1+c2;

cout<<"c1=";c1.display();

cout<<"c2=";c2.display();

cout<<"c1+c2=";c3.display();

c3=i+c1;

cout<<"i+c1=";c3.display();

c3=c1+i;

cout<<"c1+i=";c3.display();

c3=c1-c2;

cout<<"c1-c2=";c3.display();

c3=c1*c2;

cout<<"c1*c2=";c3.display();

cout<<"将一个实数转换为复数:

"<

c3=Complex(3.8);

c3.display();

}

4.      设计一个矩阵类,要求在矩阵类中重载加(+)、减(-)、乘(*)、复值(=)运算,在主函数中定义两个对象,并分别调用重载的运算符。

#include

classMatrix

{

friendostream&operator<<(ostream&out,Matrix&M);//重载<<运算符

friendistream&operator>>(istream&in,Matrix&M);//重载>>运算符

public:

Matrix(intr,intc);

Matrixoperator+(Matrix&M);

Matrixoperator-(Matrix&M);

Matrixoperator*(Matrix&M);

intGetCounts()

{

returnrows*cols;

}

private:

introws,cols;//定义矩阵的行数rows,列数cols

double*m;//矩阵中实际(物理)按行存放的元素

};

Matrix:

:

Matrix(intr,intc)

{

rows=r,cols=c;

m=newdouble[rows*cols];

}

istream&operator>>(istream&in,Matrix&M)//输入流重载

{

inti;

for(i=0;i

{

in>>*(M.m+i);

}

returnin;

}

ostream&operator<<(ostream&out,Matrix&M)//输出流重载

{

inti,j=0;

for(i=0;i

{

if(j==M.cols)j=0,out<

out<<""<<*(M.m+i);

j++;

}

returnout;

}

MatrixMatrix:

:

operator+(Matrix&M)

{

inti;

MatrixtempM(rows,cols);

for(i=0;i

*(tempM.m+i)=*(m+i)+*(M.m+i);

returntempM;

}

MatrixMatrix:

:

operator-(Matrix&M)

{

inti;

MatrixtempM(rows,cols);

for(i=0;i

*(tempM.m+i)=*(m+i)-*(M.m+i);

returntempM;

}

MatrixMatrix:

:

operator*(Matrix&M)

{

inti,j,t,k=0;

MatrixtempM(rows,cols);

for(i=0;i

for(j=0;j

{

for(t=0,*(tempM.m+k)=0;t

*(tempM.m+k)=*(tempM.m+k)+*(m+i+t)**(M.m+j+t*rows);

k++;

}

returntempM;

}

voidmain()

{

cout<<"姓名:

康涛"<

cout<<"学好:

8001613018"<

MatrixA(3,3);

MatrixB(3,3);

MatrixC(3,3);

cout<<"输入第一个矩阵的"<

"<

cin>>A;

cout<<"输入第二个矩阵的"<

"<

cin>>B;

C=A+B;

cout<

"<

cout<

cout<

"<

C=A-B;

cout<

C=A*B;

cout<

"<

cout<

}

 5. 设计一个基类Shapes,包括成员函数display(),声明为纯虚函数。

由该类派生出两个类:

矩形类Rectangle和圆类Circle, 再由长方形类派生出立方体类Box,由圆类派生出圆柱体类Cylinder。

分别定义display()函数显示图形的主要几何元素(如长宽高半径等),用GetS()计算图形的面积,用GetV计算图形的体积。

在主函数中定义相关的对象并显示相应的内容。

#include

#definePI3.14

usingnamespacestd;

classShapes

{

public:

virtualvoiddisplay()=0;

};

classRectangle:

virtualpublicShapes//长方形类

{

protected:

intx,y;

public:

Rectangle(inta,intb){x=a;y=b;};

floatGetS_Rectangle(){return(x*y);}

virtualvoiddisplay()

{

cout<<"宽:

"<

"<

cout<<"长方形的面积是:

"<

}

};

classCircle:

virtualpublicShapes//圆形类

{

protected:

intr;

public:

Circle(intradius){r=radius;};

floatGetS_Circle(){return(PI*r*r);}

virtualvoiddisplay()

{

cout<<"圆形半径是:

"<

cout<<"圆形的面积是:

"<

}

};

classBox:

publicRectangle//长方体类

{

protected:

intg;

public:

Box(inta,intb,intgao):

Rectangle(a,b),g(gao){}

floatGetV_Box(){returnRectangle:

:

GetS_Rectangle()*g;}

virtualvoiddisplay()

{

cout<<"长方体的高是:

"<

cout<<"长方体的体积是:

"<

:

GetS_Rectangle()*g<

}

};

classCylinder:

publicCircle//圆柱体类

{

protected:

inth;

public:

Cylinder(intradious,intheight):

Circle(radious),h(height){}

floatGetV_Cylinder(){returnCircle:

:

GetS_Circle()*h;}

virtualvoiddisplay()

{

cout<<"圆柱体的高是:

"<

cout<<"圆柱体的体积是:

"<

:

GetS_Circle()*h<

}

};

voidmain()

{

cout<<"姓名:

康涛"<

cout<<"学好:

8001613018"<

RectangleR1(2,3);

R1.display();

CircleC1

(2);

C1.display();

BoxB1(2,3,2);

B1.display();

CylinderCy1(2,3);

Cy1.display();

}

6.      定义一个日期类Cdate.,该类有year,month,day三个私有数据成员。

实现一下功能:

1)定义成员函数display()显示日期;2)定义成员函数setdate()设置日期;3)定义默认构造函数设置系统默认日期;4)重载++运算符。

#include

#include

usingnamespacestd;

classCdate

{

public:

Cdate(){year=0;month=0;day=0;}

Cdate(inty,intm,intd):

year(y),month(m),day(d){}

setdate(int,int,int);//设置一个时间

Cdateoperator++();

voiddisplay(){cout<

private:

intyear;

intmonth;

intday;

};

Cdate:

:

setdate(inty,intm,intd)

{

year=y;

month=m;

day=d;

}

CdateCdate:

:

operator++()

{

++day;

++month;

++year;

return*this;

}

voidmain()

{cout<<"姓名:

康涛"<

cout<<"学好:

8001613018"<

Cdatesetdate(2013,9,15);

cout<<"setdate()设置的时间是:

";

setdate.display();//输出设置时间

cout<<"重载setdate()设置的timeis:

";

CdateCdat1(2013,9,15);

{

for(inti=0;i<1;i++)

{

++Cdat1;

Cdat1.display();

}

}

tm*year;//设置当前的系统时间

tm*month;

tm*day;

time_tt;

t=time(0);

year=localtime(&t);

month=localtime(&t);

day=localtime(&t);

cout<<"当前您的电脑系统时间是:

";

cout<<(year->tm_year+1900)<<"年"<<(month->tm_mon+1)<<"月"<tm_mday<<"日"<

}

7.      用类实现一个单链表的操作。

(包括链表的建立,链表的输出,链表的插入和删除操作)

#include

usingnamespacestd;

typedefintelemtype;//数据类型模版

classLnode//结点

{

public:

elemtypedata;

Lnode*next;

};

/////////////建表

voidcreat_Link(Lnode*&head)

{

Lnode*p,*q;

intn;

p=newLnode;

head=p;

cout<<"输入链表长度:

"<

cin>>n;

cout<<"输入数据:

"<

cin>>p->data;

q=p;

for(inti=1;i<=n-1;i++)

{

p=newLnode;

cin>>p->data;

q->next=p;

q=p;

}

q->next=NULL;

}

/////////表的输出

voidoutput_Link(Lnode*&head)

{

if(head==NULL)

{cout<<"空链表!

"<

return;}

Lno

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1