C++学习案例记录--类

1.C++结构体案例案例要求

#include<iostream>
#include<string>
#include<ctime>

using namespace std;

struct student
{
	string sName;
	int score;
};

struct teacher
{
	string tName;
	student stu[5];
};
//给老师和学生赋值的函数
void allocateSpace(teacher* tea,int len)
{
	string nameSeed = "ABCDE";
	for (int i = 0; i < len; i++)
	{
		tea[i].tName = "Teacher_";
		tea[i].tName += nameSeed[i];
		for (int j = 0; j < 5 ; j++)
		{
			tea[i].stu[j].sName = "Student_";
			tea[i].stu[j].sName += nameSeed[j];
			int random = rand() % 61+40;//40~99
			tea[i].stu[j].score = random;
		}
	}
}

void printInfo(teacher *ter,int len)
{
	for (int i = 0; i < len; i++)
	{
		cout << "第" << i + 1 << "位老师的姓名:" << ter[i].tName << endl;
		for (int j = 0; j < 5; j++)

		{
			cout << "\t学生姓名:" << ter[i].stu[j].sName<< "   学生成绩:" << ter[i].stu[j].score<<endl;
		}
	}
}

int main()
{
	//随机数种子
	srand((unsigned int)time(NULL));
	student stu[15];
	teacher ter[3];
	int len = sizeof(ter) / sizeof(ter[0]);
	allocateSpace(ter,len);
	printInfo(ter,len);

	system("pause");
	return 0;
}

2.案例2
案例2要求

#include<iostream>
#include<string>
#include<ctime>

using namespace std;

struct Hero
{
	string name;
	int age;
	string sex;

};

void bubbleSort(Hero* heroArray, int len)
{
	for (int i = 0; i < len-1; i++)
	{
		for (int j = 0; j < len - i - 1; j++)
		{
			if (heroArray[j].age >heroArray[j + 1].age)
			{
				int temp = heroArray[j].age;
				heroArray[j].age = heroArray[j + 1].age;
				heroArray[j + 1].age = temp;

				string temp1 = heroArray[j].name;
				heroArray[j].name = heroArray[j + 1].name;
				heroArray[j + 1].name = temp1;

				string temp2 = heroArray[j].sex;
				heroArray[j].sex = heroArray[j + 1].sex;
				heroArray[j + 1].sex = temp2;

			}
		}
	}
}
void printInfo(Hero* heroArray, int len)
{
	for (int i = 0; i < len; i++)
	{
		cout <<"姓名:" << heroArray[i].name 
		<< "  年龄:" << heroArray[i].age 
		<< "  性别:" << heroArray[i].sex << endl;
	}

}

int main()
{
	Hero heroArray[5] =
	{
		{"刘备",23,"男"},
		{"关羽", 22, "男"},
		{"张飞", 20, "男"},
		{"赵云", 21, "男"},
		{"貂蝉", 19, "女"}
	};

	int len = sizeof(heroArray) / sizeof(heroArray[0]);
	bubbleSort(heroArray, len);
	printInfo(heroArray, len);

	system("pause");
	return 0;
}

3.案例要求
在这里插入图片描述

#include<iostream>

using namespace std;

class Cube
{
public:
	//赋值
	void setlen(double len)
	{
		m_l = len;
	}
	void setwig(double wei)
	{
		m_w = wei;
	}
	void sethei(double hei) 
	{
		m_h = hei;
	}
	double readlen()
	{
		return m_l;
	}
	double readwei()
	{
		return m_w;
	}
	double readhei()
	{
		return m_h;
	}
	//行为
	double areas()
	{
		double areas=0;
		areas = 2 * (m_l * m_w + m_l * m_h + m_h * m_w);
		return areas;
	}
	double volume()
	{
		double volume=0;
		volume = m_l * m_h * m_w;
		return volume;
	}
	bool isequ2(Cube& c)
	{
		if (m_l== c.readlen() && m_w == c.readwei() && m_h== c.readhei())
		{
			return true;
		}
		return false;
	}
private:
	//属性
	double m_l;
	double m_w;
	double m_h;
};
//全局函数
bool isequ(Cube &c1,Cube &c2)//&为引用,若用值传递浪费内存
{
	if (c1.readlen()==c2.readlen()&&c1.readwei()==c2.readwei()&&c1.readhei()==c2.readhei())
	{
		return true;
	}
	return false;
}

int main()
{
	Cube c1,c2;
	c1.setlen(1);
	c1.setwig(2);
	c1.sethei(3);
	cout << "长方体1的表面积是:" << c1.areas() << endl;
	cout << "长方体1的体积是:" << c1.volume() << endl;
	c2.setlen(1);
	c2.setwig(2);
	c2.sethei(3);
	cout << "长方体2的表面积是:" << c2.areas() << endl;
	cout << "长方体2的体积是:" << c2.volume() << endl;

	cout << "全局函数判断:" 
		<< (isequ(c1,c2)==true?"相等":"不相等")<<endl;

	cout << "成员函数判断:"
		<< (c1.isequ2(c2)== true ? "相等" : "不相等") << endl;

	system("pause");
	return 0;
}

4.案例要求
注意:(这个案例有两个注意点,我们按照注意点来写)
1.在类中可以让另一个类作为本类中的成员;
2.可将类拆分成.h头文件和.cpp文件(需要在项目中创建不同类的头文件(.h)和.cpp文件)。

在这里插入图片描述
a.(main.cpp)主函数中代码:

#include<iostream>
#include<string>
#include"point.h"
#include"circle.h"

using namespace std;
void relate(circle & c,point &p)
{
	int d = 0;
	d = (c.getcenter().getx() - p.getx()) * (c.getcenter().getx() - p.getx()) + (c.getcenter().gety() - p.gety()) * (c.getcenter().gety() - p.gety());

	cout << "距离为:" << d << endl;
	if (d > c.getr()* c.getr())//点在圆外
	{
		cout<< "点在圆外"<<endl;
	}
	else if (d < c.getr() * c.getr())//点在圆内
	{
		cout<<"点在圆内"<<endl;
	}
	else//点在圆上
	{
		cout<< "点在圆上"<<endl;
	}
}
int main()
{
	point p;
	p.setx(0);
	p.sety(0);
	point center;
	center.setx(2);
	center.sety(2);
	circle c;
	c.setcenter(center);
	c.setr(2);
	
	relate(c, p);

	system("pause");
	return 0;
}

b.point.h(点类头文件写法)

#pragma once
#include<iostream>

using namespace std;
class point
{
public:
	void setx(int x);
	void sety(int y);
	int getx();
	int gety();
private:
	int p_x;
	int p_y;
};

c.circle.h(圆类头文件写法)

#pragma once //防止头文件重复包含
#include"circle.h"
#include"point.h"
using namespace std;
class circle
{
public:
	void setcenter(point& p);
	void setr(int r);
	int getr();
	point getcenter();

private:
	//在类中可以让另一个类作为本类中的成员
	point center;//圆心
	int c_r;//半径
};

d.point.cpp(点类.cpp文件写法)

#include "point.h"

//下面函数都属于成员函数 point::为声明作用域
void point::setx(int x)
{
	p_x = x;
}
void point::sety(int y)
{
	p_y = y;
}
int point::getx()
{
	return p_x;
}
int point::gety()
{
	return p_y;
}

e.circle.cpp(圆类.cpp文件写法)

#include"circle.h"
#include"point.h"

void circle::setcenter(point& p)
{
	center = p;

}
void circle::setr(int r)
{
	c_r = r;
}
int circle::getr()
{
	return c_r;
}
point circle::getcenter()
{
	return center;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值