// 练习结构体数组排序   从键盘输入5个学生的信息(姓名、学号、成绩), // 存入一个结构体数组中,计算平均分,并按成绩高低排序并输出 #include #include #include typedef struct stu_s { char name[32]; int sid; float score; } STU; void arrAndOutput(STU *stus) // 排序并输出 { float avg = 0.0f; for (int i = 0; i < 5; i++) { avg += stus[i].score / 5; } printf("平均分为: %.2f\n", avg); // 冒泡排序 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5 - i - 1; j++) { if (stus[j].score < stus[j + 1].score) { STU tmp = stus[j]; stus[j] = stus[j + 1]; stus[j + 1] = tmp; } } } // 输出 for (int i = 0; i < 5; i++) { printf("姓名: %s, 学号: %d, 成绩: %.2f\n", stus[i].name, stus[i].sid, stus[i].score); } } int main() { STU s[5]; for (int i = 0; i < 5; i++) { printf("请输入第 %d 个学生的,格式为:(姓名 学号 成绩)", i + 1); scanf("%s %d %f", s[i].name, &s[i].sid, &s[i].score); } arrAndOutput(s); return 0; }