C++学习笔记10,C++核心编程

面向对象的编程练习

1、练习一:设计长方体类(cuboid)

求出长方体的面积和体积
分别用全局函数和成员函数判断两个长方体是否相等。
class Cuboid
{
	//属性
private:
	int c_L;
	int c_W;
	int c_H;
	//行为
public:
	//计算面积
	int c_Area()
	{
		int Area = 2 * (c_L * c_W + c_L * c_H + c_W * c_H);
		return Area;
	}
	//计算体积
	int c_Bulk()
	{
		int Bulk = c_L * c_W * c_H;
		return Bulk;
	}
	//接口
	//设置/获取长宽高
	void Setc_L(int L)
	{
		if (L < 0)
		{
			cout << "输入不合理!" << endl;
			L = 0;
			return;
		}
		c_L = L;
	}
	int Getc_L()
	{
		return c_L;
	}
	void Setc_W(int W)
	{
		if (W < 0)
		{
			cout << "输入不合理!" << endl;
			W = 0;
			return;
		}
		c_W = W;
	}
	int Getc_W()
	{
		return c_W;
	}
	void Setc_H(int H)
	{
		if (H < 0)
		{
			cout << "输入不合理!" << endl;
			H = 0;
			return;
		}
		c_H = H;
	}
	int Getc_H()
	{
		return c_H;
	}

	//利用成员函数判断 两个长方体是否相等
	bool IfIsSameC(Cuboid &c)
	{
		if (c_L == c.Getc_L() && c_W == c.Getc_W() && c_H == c.Getc_H())
		{
			return true;
		}
		return false;

	}
};
//利用全局函数判断 两个长方体是否相等
bool IfIsSame(Cuboid &c1, Cuboid &c2)
{
	if (c1.Getc_L() == c2.Getc_L() && c1.Getc_W() == c2.Getc_W() && c1.Getc_H() == c2.Getc_H())
	{
		return true;
	}
	else
	{
		return false;
	}
}
int main18()
{
	Cuboid c1;
	c1.Setc_L(10);
	c1.Setc_W(20);
	c1.Setc_H(30);
	cout << "面积是:" << c1.c_Area() << endl;
	cout << "体积是:" << c1.c_Bulk() << endl;

	Cuboid c2;
	c2.Setc_L(10);
	c2.Setc_W(20);
	c2.Setc_H(30);

	//利用全局函数判断
	bool ret1 = IfIsSame(c1, c2);
	if (ret1)
	{
		cout << "c1和c2是相等的" << endl;
	}
	else
	{
		cout << "c1和c2不相等" << endl;
	}

	//利用成员函数判断
	bool ret2 = c1.IfIsSameC(c2);
	if (ret2)
	{
		cout << "c1和c2是相等的!" << endl;
	}
	else
	{
		cout << "c1和c2不相等!" << endl;
	}

	system("pause");
	return 0;
}

2、练习二:点和圆的关系

设计一个圆类(circle)和一个点类(point),判断点和圆的关系(圆内、圆上、圆外)?
方法一:普通写法
//点类
class Point
{
private:
	int p_X;
	int p_Y;
public:
	//设置/获取X、Y
	void SetX(int x)
	{
		p_X = x;
	}
	int GetX()
	{
		return p_X;
	}
	void SetY(int y)
	{
		p_Y = y;
	}
	int GetY()
	{
		return p_Y;
	}
};

//圆类
class Circle1
{
private:
	int c_R;		//半径
	Point c_Center;	//圆心

public:
	//设置获取圆心、半径
	void SetR(int r)
	{
		c_R = r;
	}
	int GetR()
	{
		return c_R;
	}
	//void SetCenter(int x, int y)
	void SetCenter(Point center)
	{
		//c_Center.SetX(x);
		//c_Center.SetY(y);
		c_Center = center;
	}
	Point GetCenter()
	{
		return c_Center;
	}
};
//判断点和圆的关系
void IsInCircle(Circle1 &c, Point &p)
{
	//计算点到圆心的距离
	int len;
	len = pow((c.GetCenter().GetX() - p.GetX()), 2) + pow((c.GetCenter().GetY() - p.GetY()), 2);
	int distance;
	distance = pow(len, 0.5);//开平方

	if (distance < c.GetR())
	{
		cout << "点在圆内" << endl;
		return;
	}
	else if (distance > c.GetR())
	{
		cout << "点在圆外" << endl;
		return;
	}
	else
	{
		cout << "点在圆上" << endl;
		return;
	}
}
int main19()
{
	//创建圆
	Circle1 c1;
	c1.SetR(5);
	Point center;
	center.SetX(5);
	center.SetY(0);
	c1.SetCenter(center);

	//创建点
	Point p1;
	p1.SetX(5);
	p1.SetY(5);

	IsInCircle(c1, p1);

	system("pause");
	return 0;
}
方法二:文件拆分

将点类(point)进行拆分
Point.h文件

#pragma once	//防止头文件重复包含
#include <iostream>
using namespace std;

//点类
class Point
{
private:
	int p_X;
	int p_Y;

public:
	//设置/获取X、Y
	void SetX(int x);

	int GetX();

	void SetY(int y);

	int GetY();
};

//去掉函数的实现,只写声明

Point.cpp文件

#include "Point.h"

//点类

//设置/获取X、Y
void Point::SetX(int x)	//Point:: -> 作用域,用来说明该函数是一个成员函数
{
	p_X = x;
}
int Point::GetX()	//Point作用域下的成员函数 GetX()
{
	return p_X;
}
void Point::SetY(int y)
{
	p_Y = y;
}
int Point::GetY()
{
	return p_Y;
}

//去掉class Point{};	pbulic/private等权限说明 和类的属性,只留下函数的实现

主函数

#include "Point.h"

class Circle1
{
private:
	int c_R;		//半径
	Point c_Center;	//圆心

public:
	//设置获取圆心、半径
	void SetR(int r)
	{
		c_R = r;
	}
	int GetR()
	{
		return c_R;
	}
	//void SetCenter(int x, int y)
	void SetCenter(Point center)
	{
		//c_Center.SetX(x);
		//c_Center.SetY(y);
		c_Center = center;
	}
	Point GetCenter()
	{
		return c_Center;
	}
};
//判断点和圆的关系
void IsInCircle(Circle1 &c, Point &p)
{
	//计算点到圆心的距离
	int len;
	len = pow((c.GetCenter().GetX() - p.GetX()), 2) + pow((c.GetCenter().GetY() - p.GetY()), 2);
	int distance;
	distance = pow(len, 0.5);//开平方

	if (distance < c.GetR())
	{
		cout << "点在圆内" << endl;
		return;
	}
	else if (distance > c.GetR())
	{
		cout << "点在圆外" << endl;
		return;
	}
	else
	{
		cout << "点在圆上" << endl;
		return;
	}
}
int main19()
{
	//创建圆
	Circle1 c1;
	c1.SetR(5);
	Point center;
	center.SetX(5);
	center.SetY(0);
	c1.SetCenter(center);

	//创建点
	Point p1;
	p1.SetX(5);
	p1.SetY(5);

	IsInCircle(c1, p1);

	system("pause");
	return 0;
}

(哔哩哔 哩黑马程序员 C++教程 学习笔记,如有侵权请联系删除)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值