关于#c语言#的问题,请各位专家解答!

img


如何从键盘输入三名学生的学号姓名和C语言成绩输出最高分最低分平均分并按由高到低的顺序输出学生的成绩

定义一个学生信息结构数组,然后用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;
}