资源链接:
提示:
练习案例以及代码:
#include<iostream>
using namespace std;
struct hero
{
string name;
int age;
string gender;
};
void bubble(hero arr[], int len)
{
//比较arr[i].age的大小进行排序
for (int j = 0; j < len - 1; j++)
{
for (int i = 0; i < len-j -1; i++)//后面不能加“;”
{
if (arr[i].age > arr[i + 1].age)
{
hero temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
cout << "j=" << j << endl; //检查
for (int k = 0; k < len; k++)
{
cout << j<<" 年龄:" << arr[k].age << endl;
}
cout << endl;
}
}
void print1(hero arr[], int len)
{
for (int i = 0; i < len; i++)
{
cout << "英雄姓名:" << arr[i].name << "年龄:" << arr[i].age << "性别" << arr[i].gender << endl;
}
}
int main()
{
int a = 1;
strudf(a);
te(a);
hero arr[5] =
{
{"刘备",23,"男"},
{"关羽",22,"男"},
{"张飞",21,"男"},
{"赵云",20,"男"},
{"貂蝉",19,"女"},
};
int len = sizeof(arr) / sizeof(arr[0]);
//设计英雄结构体:年龄,性别,姓名, *结构体通常放在(主函数)外侧定义
// 创建数组存放英雄数据
// 创建结构体数组:存放五名英雄
// 按年龄冒泡排序升序 bubble()
// 打印排序后的结果 print1()
cout << len << endl;
cout << "排序前:" << endl;
print1(arr, len);
bubble(arr, len);
cout << "排序后:" << endl;
print1(arr, len);
system("pause");
return 0;
}
需要注意的点:
1.结构体数组怎么在主函数和子函数间传递
2.地址传递子函数可以改变主函数中的值,值传递不能改变
总结:
提示: