main.m 文件
Stu b[5] = {
{"xiaoming",99,20},
{"xiaohong",95,19},
{"xiaoli",96,21},
{"xiaoguang",98,22},
{"xiaoshuai",97,23},
};
//按学生成绩升序排列
ascendingOrderScore(b,5);
//调用输出函数查看是否正确
printf("按学生成绩升序排列为:\n");
printAllStu(b,5);
//按学生的姓名降序排序
descendingOrderName(b,5);
//调用输出函数查看是否正确
printf("按学生的姓名降序排序为:\n");
printAllStu(b,5);
//按年龄从低到高排序
ascendingOrderAge(b,5);
//调用输出函数查看是否正确
printf("按年龄从低到高排序为:\n");
printAllStu(b,5);
typedef struct stu{
char name[20];//存储姓名
float score;//存储成绩
int age;//存储年龄
}Stu;
//按学生的成绩升序排序
void ascendingOrderScore(Stu a[],int count);
//按学生的姓名降序排序
void descendingOrderName(Stu a[],int count);
//按年龄从低到高排序
void ascendingOrderAge(Stu a[],int count);
//输出一个学生的全部信息
void printStu(Stu a);
//输出所有学生的全部信息
void printAllStu(Stu a[],int count);
//按学生的成绩升序排序
void ascendingOrderScore(Stu a[],int count){
for (int i =0; i < count - 1; i++) {
for (int j =0; j < count - 1 -i; j++) {
if (a[j].score > a[j +1].score) {
Stu orderScore = {0};
orderScore = a[j];
a[j] = a[j +1];
a[j +1] = orderScore;
}
}
}
}
//按学生的姓名降序排序
void descendingOrderName(Stu a[],int count){
for (int i =0; i < count - 1; i++) {
for (int j =0; j < count - 1 -i; j++) {
if (strcmp(a[j].name, a[j +1].name) < 0) {
Stu OrderName = {0};
OrderName = a[j];
a[j] = a[j +1];
a[j +1] = OrderName;
}
}
}
}
//按年龄从低到高排序
void ascendingOrderAge(Stu a[],int count){
for (int i =0; i < count - 1; i++) {
for (int j =0; j < count - 1 -i; j++) {
if (a[j].age > a[j +1].age) {
Stu orderAge = {0};
orderAge = a[j];
a[j] = a[j +1];
a[j +1] = orderAge;
}
}
}
}
//输出一个学生的全部信息
void printStu(Stu a){
printf("name:%s score:%.2f age:%d\n",a.name,a.score,a.age);
}
//输出所有学生的全部信息
void printAllStu(Stu a[],int count){
for (int i =0; i < count; i++) {
printStu(a[i]);
}
printf("\n");
}