韩云龙 114-4
(1)
class C
{
private:
int x;
public:
C(int x){this->x = x;}
int getX(){return x;}
};
void main()
{
const C c(5);
cout<<c.getX();
system("pause");
}
(有点不明白)
(2)
#include<iostream>
using namespace std;
class A
{
private:
int *a;
int n;
int MaxLen;
public:
A(): a(0), n(0), MaxLen(0) {}
A(int *aa, int nn, int MM);
~A();
int GetValue(int i) {return a[i];}
};
A::A(int *aa, int nn, int MM)
{
n=nn;
MaxLen=MM;
if(n>MaxLen) exit(1);
a=new int[MaxLen];
for(int i=0;*aa=a[i],i<=MM;i++); //以i为循环变量把aa数组中每个元素值传送给a数组的对应元素中
}
A::~A()
{
delete[]a; //析构函数的类外定义,释放指针型数据a所指向的空间
}
void main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10};
A r(b,10,10);
int i,s=0;
for(i=0;i<=10;i++)
{
s=r.GetValue(i)+s;
} //以i为循环变量,把r对象的a数据成员中的每个元素值依次累加到s中
cout<<"s="<<s<<endl;
system("pause");
}
(3)
(4)
- #include <iostream>
- #include <Cmath>
- using namespace std;
- class CPoint
- {
- private:
- double x; // 横坐标
- double y; // 纵坐标
- public:
- CPoint(double xx=0,double yy=0);
- double distance(CPoint p) const; // 两点之间的距离
- void input(); //以x,y 形式输入坐标点
- void output(); //以(x,y) 形式输出坐标点
- };
- class CTriangle
- {
- public:
- CTriangle(CPoint &X,CPoint &Y,CPoint &Z):A(X),B(Y),C(Z){} //给出三点的构造函数
- void setTriangle(CPoint &X,CPoint &Y,CPoint &Z);//
- double perimeter(void);//计算三角形的周长
- double area(void);//计算并返回三角形的面积
- bool isRightTriangle(); //是否为直角三角形
- bool isIsoscelesTriangle(); //是否为等腰三角形
- private:
- CPoint A,B,C; //三顶点
- };
- CPoint::CPoint(double xx,double yy)
- {
- x=xx;
- y=yy;
- }
- // 输入坐标点
- void CPoint::input()
- {
- char ch;
- cout<<"请输入坐标点(格式x,y ):";
- while(1)
- {
- cin>>x>>ch>>y;
- if (ch==',') break;
- cout<<"输入的数据格式不符合规范,请重新输入\n";
- }
- }
- // 输出坐标点
- void CPoint::output()
- {
- cout<<"("<<x<<", "<<y<<")"<<endl;
- }
- // 求两点之间的距离
- double CPoint::distance(CPoint p) const
- {
- double d;
- d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
- return d;
- }
- void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)
- {
- A=X;
- B=Y;
- C=Z;
- }
- double CTriangle::perimeter(void)
- {
- double a=B.distance(C),b=C.distance(A),c=A.distance(B); //求边长
- return (a + b + c);
- }
- double CTriangle::area(void)
- {
- double a=B.distance(C),b=C.distance(A),c=A.distance(B);
- double s = (a + b + c) / 2;
- return sqrt(s * (s - a) * (s - b) * (s - c));
- }
- bool CTriangle::isRightTriangle()//是否为直角三角形
- {
- double a=B.distance(C),b=C.distance(A),c=A.distance(B);
- if((abs(a*a-b*b-c*c)<1e-7)||(abs(b*b-a*a-c*c)<1e-7)||(abs(c*c-b*b-a*a)<1e-7))
- return true;
- else
- return false;
- }
- bool CTriangle::isIsoscelesTriangle() //是否为等腰三角形
- {
- double a=B.distance(C),b=C.distance(A),c=A.distance(B);
- if((abs(a-b)<1e-7)||(abs(b-c)<1e-7)||(abs(c-a)<1e-7))
- return true;
- else
- return false;
- }
- void main(void)
- {
- CTriangle Tri1(CPoint(2,5),CPoint(5,2),CPoint(7,8)); //定义三角形类的一个实例(对象)
- cout<<"该三角形的周长为:"<<Tri1.perimeter()<<",面积为:"<<Tri1.area()<<endl<<endl;
- cout<<"该三角形"<<(Tri1.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl;
- cout<<"该三角形"<<(Tri1.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;
- system("pause");
- }