在做项目实战时想把结构体的冒泡排序当作项目扩展。但在网上搜了原理一时又看不懂(当时做了接近一天的项目实战,属实没心情看),突然想到一个简便的方法。就是将一个数组与结构体数组一一对应。然后用数组来代替结构体进行冒泡排序。程序如下(仅作参考):
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
struct student {
char name[20];
char sex[10];
int score;
};
int main()
{
student stu[4];
for (int i = 0; i < 4; i++)
{
printf("请输入姓名:\n");
scanf("%s", stu[i].name);
printf("请输入性别:\n");
scanf("%s", stu[i].sex);
printf("请输入总分:\n");
scanf("%d", &stu[i].score);
}
int temp;
int a[4] = { 0,1,2,3};
for(int i=1;i<4;i++)
for (int j = 0; j < 4 - i; j++)
{
if (stu[j].score > stu[j + 1].score)
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
for (int i = 0; i < 4; i++)
{
int j;
j = a[4-i-1];
printf("第%d名:%s\t%s\t%d\t\n", i + 1, stu[j].name, stu[j].sex, stu[j].score);
}
}
运行结果如下: