几道C++编程题

本文展示了如何使用面向对象的方法,通过矩形和三角形类来计算各自的面积和周长。实例化了矩形类并计算了给定尺寸的矩形1和矩形2的面积和周长,同时定义了三角形类,以myPoint类表示顶点,实现了三角形的周长和面积计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.已知两个矩形的长和宽,用面向对象的概念编程求它们的面积和周长。假设矩形 1 的长和宽分别为 20 和 50;矩形 2 的长和宽分别为 3.6 和 4.5。(先定义矩形类再实例化两个对象)

#include<iostream>
using namespace std;
class juxing
{
private:
	float m,n;
public:
	juxing(float a,float b)
	{
	  m=a;
	  n=b;
	}
	float mianji()
	{
	  return m*n;
	}
	float zhouchang()
	{
	   return 2*(m+n);
	}
};
int main()
{
   juxing x1(20,50),x2(3.6,4.5);
	   cout<<"矩形1的面积:"<<x1.mianji()<<endl;
       cout<<"矩形2的面积:"<<x2.mianji()<<endl;
	   cout<<"矩形1的周长:"<<x1.zhouchang()<<endl;
	   cout<<"矩形2的周长:"<<x2.zhouchang()<<endl;
   return 0;
}

2.设有一个点myPoint类的定义如下:

class myPoint { 

public:

   myPoint(double x0=0.0,double y0=0.0):x(x0),y(y0) {}

   myPoint(myPoint &np):x(np.x),y(np.y) {}

   double GetX() { return x;}

   double GetY() {return y;}

   void SetX(double x0) {x=x0;}

   void SetY(double y0) {x=y0;}

   void SetPoint(double x0,double y0) {x=x0;y=y0;}

   void SetPoint(myPoint &np) { x=np.x; y=np.y;}

   double  GetLength(myPoint &p) {

     return sqrt((x-p.x)*(x-p.x) +(y-p.y)*(y-p.y));

   }

   void Printit() { cout<<" ("<<x<<","<<y<<") ";}

private:

   double x ,y;

};

试定义一个三角形Triangle类,在Triangle类中以点myPoint类的3个对象p1、p2、p3作为数据成员,表示三角形的三个顶点。Triangle类具有计算三角形的周长和面积的功能。请编写程序上机调试并运行。(在类中运用类)

#include<iostream>
#include<cmath>
using namespace std;
class mypoint
{
public:
	mypoint(double x0=0.0,double y0=0.0):x(x0),y(y0){}
	mypoint(mypoint &np):x(np.x),y(np,y){}
    double getx(){return x;}
	double gety(){return y;}
	void setx(double x0){x=x0;}
    void sety(double y0){y=y0;}
    void setpoint(double x0,double y0){x=x0;y=y0;}
	void setpoint(mypoint &np){x=np.x;y=np.y;}
	double getl(mypoint &p)
	{
		double t;
		t=sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
		return t;
	}
	void print(){cout<<"("<<x<<","<<y<<")"<<endl;}
private:
	double x,y;
};
class tri
{
public:
	mypoint p1,p2,p3,p;
    tri(mypoint &m1,mypoint &m2,mypoint &m3)
	{ 
		/*p1.x=m1.x;
		p1.y=m1.y;
		p2.x=m2.x;
		p2.y=m2.y;
		p3.x=m3.x;
		p3.y=m3.y;*///私有成员不能在类外访问
	/*	p1.mypoint(m1.getx() ,m1.gety() );
		p2.mypoint(m2.getx ,m2.gety );
		p3.mypoint(m3.getx ,m3.gety );*/
		p1=m1;
		p2=m2;
		p3=m3;
	}
	double m()
	{
	   return (p1.getl(p2)+p1.getl(p3)+p2.getl(p3));
	  /*cout<<p1.getl(p2)<<endl;
      cout<<p1.getl(p3)<<endl;
	  cout<<p3.getl(p2)<<endl;*/
	  
	}
	double n()
	{
	  double d,b, p=p1.getl(p2)+p1.getl(p3)+p2.getl(p3);
	  d=p*(p-p1.getl(p2))*(p-p1.getl(p3))*(p-p2.getl(p3));
	  b=sqrt(d);
	  return b;
	}

};
int main()
{
	mypoint p1(3,3),p2(2,6),p3(1,3);
	tri t(p1,p2,p3);
	cout<<"矩形的周长是:"<<t.m()<<endl; 
	cout<<"矩形的面积是:"<<t.n ()<<endl;
	//t.m();
    return 0;
}

输出结果如下:

 

实现功能。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么时候上岸?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值