C++实验报告46542.docx

上传人:b****6 文档编号:15297319 上传时间:2023-07-03 格式:DOCX 页数:17 大小:61.25KB
下载 相关 举报
C++实验报告46542.docx_第1页
第1页 / 共17页
C++实验报告46542.docx_第2页
第2页 / 共17页
C++实验报告46542.docx_第3页
第3页 / 共17页
C++实验报告46542.docx_第4页
第4页 / 共17页
C++实验报告46542.docx_第5页
第5页 / 共17页
C++实验报告46542.docx_第6页
第6页 / 共17页
C++实验报告46542.docx_第7页
第7页 / 共17页
C++实验报告46542.docx_第8页
第8页 / 共17页
C++实验报告46542.docx_第9页
第9页 / 共17页
C++实验报告46542.docx_第10页
第10页 / 共17页
C++实验报告46542.docx_第11页
第11页 / 共17页
C++实验报告46542.docx_第12页
第12页 / 共17页
C++实验报告46542.docx_第13页
第13页 / 共17页
C++实验报告46542.docx_第14页
第14页 / 共17页
C++实验报告46542.docx_第15页
第15页 / 共17页
C++实验报告46542.docx_第16页
第16页 / 共17页
C++实验报告46542.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++实验报告46542.docx

《C++实验报告46542.docx》由会员分享,可在线阅读,更多相关《C++实验报告46542.docx(17页珍藏版)》请在冰点文库上搜索。

C++实验报告46542.docx

C++实验报告46542

实验报告

1、定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。

#include

constdoublePI=3.1415;

classCircle{

doubleradius,length,area;

public:

Circle(doubler=0){

setr(r);

length=2*PI*radius;

area=PI*radius*radius;

}

voidprint(){

cout<<"radius="<

cout<<"length="<

cout<<"area="<

}

voidsetr(doubler){

radius=r;

}

};

voidmain(){

Circlec1(10),c2(c1);

c1.print();

c2.print();

}

2、定义一个Point类表示平面上的一个点,再定义一个Rectangle类表示平面上的矩形,用Point类的对象作为Rectangle类的成员描述平面上矩形的顶点坐标。

要求类Point中有相应的成员函数可以读取点的坐标值,类Rectangle中含有一个函数,用以计算并输出矩形的面积及顶点坐标。

在主函数中对类Rectangle进行测试。

#include

#include

classPoint{

intx,y;

public:

Point(inta=0,intb=0)

{

x=a;

y=b;

}

intgetx(){returnx;}

intgety(){returny;}

voidprint()

{

cout<<'('<

}

};

classRectangle{

Pointp1,p2,p3,p4;

public:

Rectangle(inta,intb,intc,intd):

p1(a,b),p2(c,b),p3(a,d),p4(c,d)

{

}

voidf()

{

cout<<"矩形顶点坐标:

"<

p1.print();cout<<'\t';p2.print();cout<

p3.print();cout<<'\t';p4.print();cout<

ints=abs(p1.getx()-p2.getx())*abs(p1.gety()-p3.gety());

cout<<"矩形面积:

"<

}

};

voidmain()

{

Rectangler(2,6,8,10);

r.f();

}

3、定义一个类,用于删除字符串中多余的字符,使其中的字符互不相同,具体要求如下:

(1)类的数据成员(字符串)用指针表示,并在构造函数中根据参数的实际情况为该成员指针申请类存空间。

(2)删除多余字符串时,只能在原字符串空间中进行,不得借助其他辅助空间。

#include

#include

classS{

char*str;

public:

S(char*s)

{

str=newchar[strlen(s)+1];

strcpy(str,s);

}

voidf()

{

char*p1=str,*p2,*p3;

while(*p1)

{

p2=p1+1;

while(*p2)

if(*p1==*p2)

{

p3=p2;

while(*p3)

{

*p3=*(p3+1);

p3++;

}

}

elsep2++;

p1++;

}

}

voidprint()

{

cout<

}

~S()

{

delete[]str;

}

};

voidmain()

{

chars[100];

cin.getline(s,100);

St(s);

cout<<"原字符串为:

\n";

t.print();

t.f();

cout<<"删除后的字符串为:

\n";

t.print();

}

4、定义一个类Array,实现二维数组每列元素按各元素的各位数字之和从小到大排序。

要求用一个专门的函数求数组元素的各位数字之和。

#include

#include

classArray{

inta[4][3];

public:

Array(intp[][3],intn)

{

for(inti=0;i

for(intj=0;j<3;j++)

a[i][j]=p[i][j];

}

intf(intn)

{

ints=0;

while(n){

s+=n%10;

n/=10;

}

returns;

}

voidfun()

{

for(inti=0;i<3;i++){

for(intj=0;j<3;j++)

for(intk=j+1;k<4;k++)

if((f(a[j][i]))>f(a[k][i])){

intt=a[j][i];

a[j][i]=a[k][i];

a[k][i]=t;

}

}

}

voidshow()

{

for(inti=0;i<4;i++){

for(intj=0;j<3;j++)

cout<

cout<

}

}

};

voidmain()

{

inta[4][3];

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

for(intj=0;j<3;j++)

a[i][j]=rand()%1000;

Arrayt(a,4);

cout<<"原数组为:

"<

t.show();

cout<<"排序后的数组为:

"<

t.fun();

t.show();

}

5、定义一个求n!

的类,要求其成员数据包括n和n!

,成员函数分别实现设定n的值、计算n!

以及输出成员数据。

编写一个完整的程序对类进行测试。

#include

classA{

intn,nn;

public:

A(intx=0)

{n=x;}

voidset(intx)

{n=x;}

voidfun()

{nn=1;

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

nn*=i;

}

voidprint()

{cout<<"n="<

cout<<"nn="<

}

};

voidmain()

{

Aa1;

a1.fun();

a1.print();

a1.set(5);

a1.fun();

a1.print();

}

6、建立分数类函数fraction,用于表示最简分数。

最简分数为分子和分母没有公约数的分数。

具体要求如下:

(1)私有数据成员。

1)intm;//分子

2)intn;//分母

(2)公有成员函数。

1)fraction(intim,intin);//构造函数,用im和in分别初始化数据成员m和n。

2)intgcd(intx,inty);//求x和y的最大公约数,结果为正数。

3)voidcj();//对当前分数进行约解,使其成为最简分数。

4)viodshow();//输出分数,格式为m/n。

3)在主函数中对该类进行测试。

定义分数a,其初值3/12,约简分数后再输出。

程序运行的结果是:

3/12

1/4

#include

classfraction{

intm;

intn;

public:

fraction(intim,intin);

intgcd(intx,inty);

voidcj();

voidshow();

};

fraction:

:

fraction(intim,intin)

{

m=im;n=in;

}

intfraction:

:

gcd(intx,inty)

{

for(inti=x;;i--)

if(x%i==0&&y%i==0)returni;

}

voidfraction:

:

cj()

{

intt=gcd(m,n);

m=m/t;

n=n/t;

}

voidfraction:

:

show()

{

cout<

}

voidmain()

{

fractiona(3,12);

a.show();

a.cj();

a.show();

}

7、计算直角三角形的面积。

#include

#include

classTRI{

inta,b,c;

public:

voidSet(inta1,intb1,intc1)

{

a=a1;

b=b1;

c=c1;

if(a

swap(a,b);

if(a

swap(a,c);

cout<<"三角形的边长:

"<

if(a*a!

=b*b+c*c){

cout<<"不能够成直角三角形,以下面积计算错误!

\n";

}

}

voidswap(int&t1,int&t2)

{

intt=t1;

t1=t2;

t2=t;

}

voidShowArea()

{

doubles=b*c/2.0;

cout<<"三角形的面积:

"<

}

};

voidmain()

{

TRIt1;

t1.Set(3,4,5);

t1.ShowArea();

t1.Set(3,4,7);

t1.ShowArea();

}

8

12

15

3

9

6

8

10

5

12

16

4

18

10

9

8、定义一个类DataTower求数塔各层极大值数字的和。

对于右图所示的5层数塔其和为8+15+9+12+18=62。

具体要求如下:

(1)私有数据成员

●intd[5][5];//用二维数组的下三角存储数塔

●intindex[5];//存储各层极大值元素的位置

●intmaxsum;//极大值元素的和

(2)公有成员函数

●DataTower(intt[][5],intn);//用行指针t所指

二维数组的前n行初始化数塔

●voidf();//求各层极大值元素的位置,

即index[0]为第1层极大值的列下标0,

index[1]为第2层极大值的列下标1,

index[2]为第3层极大值的列下标1,以此类推。

●voidfun();//根据成员index中的元素值(极大值元素的列下标)求maxsum

●voidprint();输出各数据成员,包括数塔及其极大值元素的和,极大值元素及其位置

(3)在主函数中用给定的数据对定义的类进行测试。

#include

classDataTower{

intdata[5][5];

intindex[5];

intmaxsum;

public:

DataTower(intt[][5],intn)

{

for(inti=0;i

for(intj=0;j<=i;j++)

data[i][j]=t[i][j];

}

voidf()

{

for(inti=0;i<5;i++){

index[i]=0;

for(intj=1;j<=i;j++)

if(data[i][j]>data[i][index[i]])

index[i]=j;

}

}

voidfun()

{

maxsum=0;

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

maxsum+=data[i][index[i]];

}

voidprint()

{

inti,j;

cout<<"数塔为:

\n";

for(i=0;i<5;i++){

for(j=0;j<=i;j++)

cout<

cout<

}

cout<<"极大值和为"<

\n";

for(i=0;i<5;i++)

cout<

}

};

voidmain()

{

intd[5][5]={{8},{12,15},{3,9,6},{8,10,5,12},{16,4,18,10,9}};

DataTowert(d,5);

t.f();

t.fun();

t.print();

}

实验小结:

1、C++的语法规则,让我很难接受,产生畏难情绪,总是怕。

程序出现错误,不如何查找错误,对调试不是很明白。

2、有些急于求成,总想编写综合性的程序,把老师的要求一次性尽快完成。

3、通过上机实践来验证所学的理论,在机器上查找错误来巩固概念,能开阔编程思路,提高反映效率,提高分析问题解决问题的才能。

4、找一个相似模板,认真仔细地看,去理解它,看懂它,然后根据自己的实践内容适当修改。

5、与同学讨论,通过小组的形式来学习C++。

如有侵权请联系告知删除,感谢你们的配合!

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2