目录
1、缘起
最近(2023-04-23)学习完了 C++ 语言的结构体相关知识点,如 结构体数组,结构体指针,结构体嵌套结构体 和 结构体做函数参数。本篇博客围绕着这些知识点,编写了一个这些知识点的综合应用案例,希望能够对这些知识点加深印象和灵活应用。
2、案例描述
设计一个英雄的结构体,包括成员 姓名,年龄,性别;创建结构体数组,数组中存放 5 名英雄。通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。
五名英雄信息如下:
{"刘备",24,"男"},
{"关羽",22,"男"},
{"张飞",20,"男"},
{"赵云",21,"男"},
{"貂蝉",19,"女"},
3、代码清单
#include<iostream>
#include<string>
using namespace std;
//函数声明
void BubbleSortHero(struct Hero arr[], int len);
//定义一个英雄的结构体
struct Hero
{
string name;
int age = 0;
string gender;
};
int main()
{
//定义一个英雄的结构体数组
struct Hero arr[5] =
{
{"刘备",24,"男"},
{"关羽",22,"男"},
{"张飞",20,"男"},
{"赵云",21,"男"},
{"貂蝉",19,"女"}
};
//求数组中元素的个数
int len = sizeof(arr)/sizeof(arr[0]);
//定义一个函数,将数组中的英雄按照年龄进行升序排序
BubbleSortHero(arr,len);
//打印结构体数组中的元素
for (int i = 0; i < 5; i++)
{
cout << "姓名:" << arr[i].name << " ";
cout << "年龄:" << arr[i].age << " ";
cout << "性别:" << arr[i].gender <<endl;
}
cout << endl;
system("pause");
return 0;
}
void BubbleSortHero(struct Hero arr[], int len)
{
for (int i = 0; i < len - 1; i++)
{
//标志位,假设在排序过程中剩余已排好序
int flag = 1;
for (int j = 0; j < len - 1 - i; j++)
{
//每一次冒泡排序
if (arr[j].age > arr[j + 1].age)
{
struct Hero temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = 0;
}
}
//在排序过程中已排好序了,就不会有数据交换
//即标志位就不会重新被赋值
if (flag == 1)
{
break; //跳出排序轮数循环
}
}
}
4、总结
这个应用案例涉及了 结构体数组 和 经典的冒泡排序算法,通过这个案例可以将这两块知识点了熟于心。本期的分享总结就到这里了,如果有疑问的小伙伴,我们在评论区交流嗷,笔者必回,我们下期再见啦 !