定义一个学生信息结构数组,然后用scanf逐个输入学生信息,用冒泡排序进行排序
供参考:
#include <stdio.h>
#define N 3
struct student {
int id;
char name[16];
int score;
}stu[N], tmp;
int main()
{
int i, j, max, min, sum = 0;
float avg;
for (i = 0; i < N; i++) //输入三个学生的信息,学号 姓名 成绩
{
scanf("%d %s %d", &stu[i].id, stu[i].name, &stu[i].score);
if (i == 0) {
min = max = stu[i].score;
sum += stu[i].score;
}
else {
if (max < stu[i].score)
max = stu[i].score;
if (min > stu[i].score)
min = stu[i].score;
sum += stu[i].score;
}
}
avg = sum * 1.0 / N;
for(i=0;i<N-1;i++)
for (j = 0; j < N - 1 - i; j++) {
if (stu[j].score > stu[j + 1].score) { //按成绩从高到低排序
tmp = stu[j]; stu[j] = stu[j + 1]; stu[j + 1] = tmp;
}
}
for (i = 0; i < N; i++)
printf("%d %s %d\n", stu[i].id, stu[i].name, stu[i].score);//输出排序的学生信息
printf("Max = %d ,Min = %d ,Avg = %.2f\n", max, min, avg);//输出最高分,最低分,平均分
return 0;
}