Pārlūkot izejas kodu

上传文件至 '结构体2'

Creamo 3 gadi atpakaļ
vecāks
revīzija
81b67c3cbb

+ 66 - 0
结构体2/5、结构体作函数参数.cpp

@@ -0,0 +1,66 @@
+#include <iostream>
+
+//结构体作函数参数
+//将结构体作为参数向函数中传递
+//传递方式有两种
+//⚪值传递
+//⚪地址传递
+
+//定义学生的结构体
+
+#if(0)
+
+struct Student
+{
+	//姓名
+	std::string name;
+
+	//年龄
+	int age;
+
+	//分数
+	int score;
+
+};
+
+//打印学生信息的函数
+//1、值传递
+void printStudent1(struct Student s)
+{
+	s.age = 100;
+	std::cout << "子函数1中  姓名:" << s.name << "年龄:" << s.age << "分数:" << s.score << std::endl;
+
+}
+
+//2、地址传递
+void printStudent2(struct Student *p)
+{
+	p->age = 200;
+	std::cout << "子函数2中 姓名" << p->name << "年龄:" << p->age << "分数:" << p->score << std::endl;
+}
+
+
+int main()
+{
+
+	//将学生传入到一个参数中,打印学生身上的所有信息
+
+	//创建一个结构体变量
+	struct Student s;
+	s.name = "张三";
+	s.age = 20;
+	s.score = 85;
+
+	//printStudent1(s);
+	printStudent2(&s);
+	 
+	std::cout << "main函数中打印 姓名:" << s.name << "年龄:" << s.age << "分数:" << s.score << std::endl;
+
+	system("pause");
+
+	return 0;
+}
+
+#endif
+
+//总结:如果不想修改主函数中的数据,用值传递,反之用地址传递

+ 45 - 0
结构体2/6、结构体中const使用场景.cpp

@@ -0,0 +1,45 @@
+#include <iostream>
+
+//用const防止误操作
+
+//const的使用场景
+
+#if(0)
+
+struct Student
+{
+	std::string name;    //名字
+
+	int age;             //年龄
+
+	int score;           //分数
+
+};
+
+//将函数中的形参改为指针,可以减少内存空间,而且不会复制新的副本出来
+
+void printStudents(const Student *s)      //值传递
+{
+
+	//s->age = 150;     //加入const之后,一旦有修改的操作就会报错,可以防止我们的误操作
+	std::cout << "姓名:" << s->name << "年龄:" << s->age << "得分:" << s->score << std::endl;
+
+}
+
+int main()
+{
+	//创建结构体变量
+	struct Student s = { "张三" , 15 , 70 };
+
+	//通过函数来打印结构体变量的信息
+	printStudents(&s);
+
+	std::cout << "main中张三的年龄为:" << s.age << std::endl;
+
+	system("pause");
+
+	return 0;
+}
+
+
+#endif

+ 93 - 0
结构体2/7、结构体案例1.cpp

@@ -0,0 +1,93 @@
+#include <iostream>
+#include <ctime>
+
+#if(0)
+
+//结构体案例1
+//案例描述:
+//学校正在做毕设项目,每名老师带领5个学生,总共有3名老师,需求如下:
+//设计学生和老师的结构体,其中在老师的结构体中,有老师姓名和一个存放5名学生的数组作为成员
+//学生的成员有姓名、考试分数,创建数组存放3名老师,通过函数给每个老师及所带的学生赋值
+//最终打印出老师数据以及老师所带的学生数据
+
+
+//学生的结构体
+struct Student
+{
+	std::string SName;         //学生姓名
+
+	int score;                 //学生分数
+
+};
+
+
+//老师的结构体定义
+struct Teacher
+{
+	std::string TName;             //姓名
+
+	struct Student SArray[5];
+
+};
+
+//给老师和学生赋值的函数
+void allocateSpace(struct Teacher TArray[] , int len)
+{
+	std::string nameSeed = "ABCDE";
+	//给老师赋值
+	for (int i = 0; i < len; i++)
+	{
+		TArray[i].TName = "Teacher_";
+		TArray[i].TName += nameSeed[i];
+
+		//通过循环给每名老师所带学生赋值
+		for (int j = 0; j < 5; j++)
+		{
+			TArray[i].SArray[j].SName = "Student_";
+			TArray[i].SArray[j].SName += nameSeed[j];
+
+			int random = rand() % 61 + 40;     //40 ~ 100
+ 
+			TArray[i].SArray[j].score = random;
+		}
+	}
+
+}
+
+//打印所有信息的函数
+void printInfo(struct Teacher TArray[], int len)
+{
+	for (int i = 0; i < len; i++)
+	{
+		std::cout << "老师姓名:" << TArray[i].TName << std::endl;
+
+		for (int j = 0; j < 5; j++)
+		{
+			std::cout << "\t学生姓名:" << TArray[i].SArray[j].SName << "考试分数:" << TArray[i].SArray[j].score << std::endl;
+		}
+	}
+}
+
+int main()
+{
+	//创建一个随机种子
+	srand((unsigned int)time(NULL));
+
+	//1、创建三名老师的数组
+	struct Teacher TArray[3];
+
+	//2、通过函数给3名老师的信息赋值  并给老师带的学生信息赋值
+	int len = sizeof(TArray) / sizeof(TArray[0]);
+	allocateSpace(TArray, len);
+
+	//3、打印所有老师及所带的学生信
+	printInfo(TArray, len);
+
+
+	system("pause");
+
+	return 0;
+
+}
+
+#endif

+ 86 - 0
结构体2/8、结构体案例2.cpp

@@ -0,0 +1,86 @@
+#include <iostream>
+
+//案例描述:
+//设计一个英雄的结构体,包括成员姓名、年龄、性别;创建结构体数组,数组中存放五名英雄。
+//通过冒泡排序的方法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。
+
+//五名英雄信息如下:
+//{ "刘备" ,23,"男" }
+//{ "关羽" ,22,"男" }
+//{ "张飞" ,20,"男" }
+//{ "赵云" ,21,"男" }
+//{ "貂蝉" ,19,"男" }
+
+//英雄的结构体
+struct Hero
+{
+	//姓名
+	std::string name;
+	//年龄
+	int age;
+	//性别
+	std::string sex;
+};
+
+//实现冒泡排序,年龄升序排列
+void bubbleSort(struct Hero heroArray[], int len)
+{
+	for (int i = 0; i < len - 1; i++)
+	{
+		for (int j = 0; j < len - i - 1; j++)
+		{
+			//如果j下标的元素年龄 大于j+1下标的元素年龄,交换两个元素
+			if (heroArray[j].age > heroArray[j + 1].age)
+			{
+				struct Hero temp = heroArray[j];
+				heroArray[j] = heroArray[j + 1];
+				heroArray[j + 1] = temp;
+			}
+		}
+	}
+
+
+}
+
+//打印排序后的数组中的信息
+void printHero(struct Hero heroArray[], int len)
+{
+	for (int i = 0; i < len; i++)
+	{
+		std::cout << "英雄的姓名:" << heroArray[i].name << "年龄:" << heroArray[i].age << "性别:" << heroArray[i].sex << std::endl;
+	}
+}
+
+int main()
+{
+	
+	//2、创建一个数组存放五名英雄
+	struct Hero heroArray[5] =
+	{
+		{ "刘备" ,23,"男" },
+		{ "关羽" ,22,"男" },
+		{ "张飞" ,20,"男" },
+		{ "赵云" ,21,"男" },
+		{ "貂蝉" ,19,"女" },
+
+	};
+
+	int len = sizeof(heroArray) / sizeof(heroArray[0]);
+
+	//for (int i = 0; i < len; i++)
+	//{
+	//	std::cout << "英雄的姓名:" << heroArray[i].name << "年龄:" << heroArray[i].age << "性别:" << heroArray[i].sex << std::endl;
+
+	//}
+
+	//3、对数组进行排序,按照年龄进行升序排列
+	bubbleSort(heroArray, len);
+
+	//4、将排序后的结果打印输出
+	printHero(heroArray, len);
+
+
+	system("pause");
+
+	return 0;
+}