c语言对二维数组排序


#include 
#include 

#define N 3
#define M 4 

typedef struct student { 
    int id;  
    int score[M];  
    int sum;  
    float average;  
} Student;

void sort(Student *stu, int n); 
void print(Student *stu, int n); 

int main() {
    int i, j;
    Student stu[N]; 
    printf("输入学生的成绩:\n");
    for (i = 0; i < N; i++) { 
        printf("第%d个学生:", i + 1);
        scanf("%d", &(stu[i].id));
        for (j = 0; j < M; j++) {
            scanf("%d", &(stu[i].score[j]));
            stu[i].sum += stu[i].score[j]; 
        }
        stu[i].average = (float) stu[i].sum / M; 
    }
    sort(stu, N); 
    print(stu,N);
    return 0;
}

void sort(Student *stu, int n) {
    int i, j;
    Student tmp;
    for (i = 0; i < n - 1; i++) { 
        for (j = 0; j < n - 1 - i; j++) {
            if (stu[j].sum < stu[j + 1].sum) {
                tmp = stu[j];
                stu[j] = stu[j + 1];
                stu[j + 1] = tmp;
            }
        }
    }
}
void print(Student*stu,int n)
{
    int i,j;
    printf("座号\t科目1\t科目2\t科目3\t科目4\t总分\t平均\n");
    for (i = 0; i < n; i++) 
    { 
        printf("%d\t",stu[i].id);
        for(j = 0; j < M; j++){
            printf("%d\t",stu[i].score[j]);       
        }                    
        printf("%d\t%0.2f\n",stu[j].sum,stu[i].average);        
}
}


img


为什么我的总分打印不了,平均分打印的适时候会有问题

stu[j].sum
->
stu[i].sum

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^