文档介绍:实验报告1、定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。#include<>constdoublePI=;classCircle{ doubleradius,length,area;public: Circle(doubler=0){ setr(r); length=2*PI*radius; area=PI*radius*radius; } voidprint(){ cout<<"radius="<<radius<<endl; cout<<"length="<<length<<endl; cout<<"area="<<area<<endl; } voidsetr(doubler){ radius=r; }};voidmain(){ Circlec1(10),c2(c1); (); ();}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<<'('<<x<<','<<y<<')'; }};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<<"矩形顶点坐标:"<<endl; ();cout<<'\t';();cout<<endl; ();cout<<'\t';();cout<<endl; ints=abs(()-())*abs(()-()); cout<<"矩形面积:"<<s<<endl; }};voidmain(){ Rectangler(2,6,8,10); ();}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<<str<<endl; } ~S() { delete[]str; }};voidmain(){ chars[100]; (s,100); St(s); cout<<"原字符串为:\n"; (); (); cout<<"删除后的字符串为:\n"; ();}4、定义一个类Array,实现二维数组每列元素按各元素的各位数字之和从小到大排序。要求用一个专门的函数求数组元素的各位数字之和。#include<>#include<>classArray{ inta[4][3];public: Array(intp[][3],intn) { for(inti=0;i<n;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(int