案例1:
学校正在做毕设项目,每名老师带领5个学生,总共有3名老师,需求如下:
设计学生和老师的结构体,其中在老师的结构体中,有老师姓名和一个存放5名学生的数组作为成员
学生的成员有姓名、考试分数,创建数组存放3名老师,通过函数给每个老师及所带的学生赋值
最终打印出老师数据以及老师所带的学生数据
#include<iostream> using namespace std; #include<string> #include<ctime> // 学生的结构体 struct Student { // 姓名 string sName; // 分数 int score; }; // 老师的结构体定义 struct Teacher { // 姓名 string tName; // 学生数组 struct Student sArray[5]; }; // 给老师和学生赋值的函数 void allocateSpace(struct Teacher tArray[], int len) { 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() % 60 + 40; // 40~99分 tArray[i].sArray[j].score = random; } } } // 打印所有信息 void printInfo(struct Teacher tArray[],int len) { for (int i = 0; i < len; i++) { cout << "老师姓名:" << tArray[i].tName << endl; for (int j = 0; j < 5; j++) { cout << "\t学生姓名:" << tArray[i].sArray[j].sName << "考试分数:" << tArray[i].sArray[j].score << endl; } } } int main() { // 随机数种子 srand((unsigned int)time(NULL)); // 1. 创建3名老师的数组 struct Teacher tArray[3]; // 2. 通过函数给3名老师的信息赋值,并且给老师带的学生信息赋值 int len = sizeof(tArray) / sizeof(tArray[0]); allocateSpace(tArray, len); // 3. 打印所有老师及所带的学生信息 printInfo(tArray, len); system("pause"); return 0; }
案例2:
设计一个英雄的结构体,包括成员姓名, 年龄,姓名;创建结构体数组,数组中存放5名英雄
通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果
五名英雄信息如下:
{”刘备“,23,"男"}
{”关羽“,22,"男"}
{”张飞“,20,"男"}
{”赵云“,21,"男"}
{”貂蝉“,19,"女"}
#include<iostream> using namespace std; #include<string> // 1. 设计英雄结构体 struct Hero { //姓名 string name; //年龄 int age; // 性别 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++) { cout << "姓名:" << heroArray[i].name << "年龄:" << heroArray[i].age << "性别:" << heroArray[i].sex << endl; } } int main() { // 2. 创建数组存放5名英雄 struct Hero heroArray[5] = { {"刘备",23,"男"}, {"关羽",22,"男"}, {"张飞",20,"男"}, {"赵云",21,"男"}, {"貂蝉",19,"女"}, }; int len = sizeof(heroArray) / sizeof(heroArray[0]); cout << "排序前打印:" << endl; for (int i = 0; i < len; i++) { cout << "姓名:" << heroArray[i].name << "年龄:" << heroArray[i].age << "性别:" << heroArray[i].sex << endl; } // 3. 对数组进行排序,按照年龄进行升序排序 bubbleSort(heroArray, len); // 4. 将排序后的结果打印输出 cout << "排序后打印:" << endl; printHero(heroArray, len); system("pause"); return 0; }