C++实验报告.doc

上传人:w****2 文档编号:6562392 上传时间:2020-02-29 格式:DOC 页数:11 大小:81KB
返回 下载 相关 举报
C++实验报告.doc_第1页
第1页 / 共11页
C++实验报告.doc_第2页
第2页 / 共11页
C++实验报告.doc_第3页
第3页 / 共11页
点击查看更多>>
资源描述
实验报告1、定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。#includeconst double PI=3.1415;class Circledouble radius,length,area;public:Circle(double r=0)setr(r);length=2*PI*radius;area=PI*radius*radius;void print()coutradius=radiusendl;coutlength=lengthendl;coutarea=areaendl;void setr(double r)radius=r;void main()Circle c1(10),c2(c1);c1.print();c2.print();2、定义一个Point类表示平面上的一个点,再定义一个Rectangle类表示平面上的矩形,用Point类的对象作为Rectangle类的成员描述平面上矩形的顶点坐标。要求类Point中有相应的成员函数可以读取点的坐标值,类Rectangle中含有一个函数,用以计算并输出矩形的面积及顶点坐标。在主函数中对类Rectangle进行测试。#include#includeclass Pointint x,y;public:Point(int a=0,int b=0)x=a;y=b;int getx()return x;int gety()return y;void print()cout(x,y);class RectanglePoint p1,p2,p3,p4;public:Rectangle(int a,int b,int c,int d):p1(a,b),p2(c,b),p3(a,d),p4(c,d)void f()cout矩形顶点坐标:endl;p1.print();coutt;p2.print();coutendl;p3.print();coutt;p4.print();coutendl;int s=abs(p1.getx()-p2.getx()*abs(p1.gety()-p3.gety();cout矩形面积:sendl;void main()Rectangle r(2,6,8,10);r.f();3、定义一个类,用于删除字符串中多余的字符,使其中的字符互不相同,具体要求如下: (1)类的数据成员(字符串)用指针表示,并在构造函数中根据参数的实际情况为该成员指针申请类存空间。 (2)删除多余字符串时,只能在原字符串空间中进行,不得借助其他辅助空间。#include#includeclass Schar *str;public:S(char *s)str=new charstrlen(s)+1;strcpy(str,s);void f()char *p1=str,*p2,*p3;while(*p1) p2=p1+1;while(*p2)if(*p1=*p2) p3=p2;while(*p3) *p3=*(p3+1);p3+;else p2+;p1+;void print()coutstrendl;S()delete str;void main()char s100;cin.getline(s,100);S t(s);cout原字符串为:n;t.print();t.f();cout删除后的字符串为:n;t.print();4、定义一个类Array,实现二维数组每列元素按各元素的各位数字之和从小到大排序。要求用一个专门的函数求数组元素的各位数字之和。#include#includeclass Arrayint a43;public:Array(int p3,int n)for(int i=0;in;i+)for(int j=0;j3;j+)aij=pij;int f(int n)int s=0;while(n)s+=n%10;n/=10;return s;void fun()for(int i=0;i3;i+)for(int j=0;j3;j+)for(int k=j+1;kf(aki)int t=aji;aji=aki;aki=t;void show()for(int i=0;i4;i+)for(int j=0;j3;j+)coutaijt;coutendl;void main()int a43;for(int i=0;i4;i+)for(int j=0;j3;j+)aij=rand()%1000;Array t(a,4);cout原数组为:endl;t.show();cout排序后的数组为:endl;t.fun();t.show();5、定义一个求n!的类,要求其成员数据包括n和n!,成员函数分别实现设定n的值、计算n!以及输出成员数据。编写一个完整的程序对类进行测试。#includeclass Aint n,nn; public: A(int x=0) n=x; void set(int x) n=x; void fun() nn=1; for(int i=1;i=n;i+) nn*=i; void print() coutn=nendl; coutnn=nnendl; ;void main()A a1;a1.fun();a1.print();a1.set(5);a1.fun();a1.print();6、建立分数类函数fraction,用于表示最简分数。最简分数为分子和分母没有公约数的分数。具体要求如下:(1)私有数据成员。1)int m; /分子2)int n; /分母(2)公有成员函数。1)fraction(int im ,int in); /构造函数,用im和in分别初始化数据成员m和n。2)int gcd(int x,int y); /求x和y的最大公约数,结果为正数。3)void cj(); /对当前分数进行约解,使其成为最简分数。4)viod show(); /输出分数,格式为m/n。3)在主函数中对该类进行测试。定义分数a,其初值3/12,约简分数后再输出。程序运行的结果是:3/121/4 #include class fractionint m;int n;public:fraction(int im,int in);int gcd(int x,int y);void cj();void show();fraction:fraction(int im,int in)m=im;n=in;int fraction:gcd(int x,int y)for(int i=x; ;i-)if(x%i=0&y%i=0)return i;void fraction:cj()int t=gcd(m,n);m=m/t;n=n/t;void fraction:show()coutm/nn;void main()fraction a(3,12);a.show();a.cj();a.show();7、 计算直角三角形的面积。#include#includeclass TRIint a,b,c;public:void Set(int a1,int b1,int c1)a=a1;b=b1;c=c1;if(ab)swap(a,b);if(ac)swap(a,c);cout三角形的边长:a,b,cendl;if(a*a!=b*b+c*c)cout不能够成直角三角形,以下面积计算错误!n;void swap(int&t1,int&t2)int t=t1;t1=t2;t2=t;void ShowArea()double s=b*c/2.0;cout三角形的面积:sendl;void main()TRI t1;t1.Set(3,4,5);t1.ShowArea();t1.Set(3,4,7);t1.ShowArea();81215396810512164181098、定义一个类DataTower求数塔各层极大值数字的和。 对于右图所示的5层数塔其和为8+15+9+12+18=62。 具体要求如下:(1)私有数据成员l int d55;/用二维数组的下三角存储数塔l int index5;/存储各层极大值元素的位置l int maxsum;/极大值元素的和(2)公有成员函数l DataTower(int t5,int n);/用行指针t所指 二维数组的前n行初始化数塔l void f();/求各层极大值元素的位置, 即index0为第1层极大值的列下标0, index1为第2层极大值的列下标1, index2为第3层极大值的列下标1,以此类推。l void fun();/根据成员index中的元素值(极大值元素的列下标)求maxsuml void print();输出各数据成员,包括数塔及其极大值元素的和,极大值元素及其位置(3)在主函数中用给定的数据对定义的类进行测试。#includeclass DataTowerint data55;int index5;int maxsum;public:DataTower(int t5,int n)for(int i=0;in;i+)for(int j=0;j=i;j+)dataij=tij;void f()for(int i=0;i5;i+)indexi=0;for(int j=1;jdataiindexi)indexi=j;void fun()maxsum=0;for(int i=0;i5;i+)maxsum+=dataiindexi;void print()int i,j;cout数塔为:n;for(i=0;i5;i+)for(j=0;j=i;j+)coutdataijt;coutendl;cout极大值和为maxsum,极大值元素为:n;for(i=0;i5;i+)coutdataiindexi(第i+1层列标为indexi)n;void main()int d55=8,12,15,3,9,6,8,10,5,12,16,4,18,10,9;DataTower t(d,5);t.f();t.fun();t.print();实验小结:1、C+的语法规则,让我很难接受,产生畏难情绪,总是怕。程序出现错误,不如何查找错误,对调试不是很明白。2、有些急于求成,总想编写综合性的程序,把老师的要求一次性尽快完成。3、通过上机实践来验证所学的理论,在机器上查找错误来巩固概念,能开阔编程思路,提高反映效率,提高分析问题解决问题的才能。4、找一个相似模板,认真仔细地看,去理解它,看懂它,然后根据自己的实践内容适当修改。 5、与同学讨论,通过小组的形式来学习C+。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!