56 lines
1.2 KiB
C
56 lines
1.2 KiB
C
// 练习结构体数组排序 从键盘输入5个学生的信息(姓名、学号、成绩),
|
||
// 存入一个结构体数组中,计算平均分,并按成绩高低排序并输出
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
|
||
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;
|
||
} |