C语言求每个学生的总成绩和每门课的最高分

每个学生的最高分和每门课的平均分的程序如下,可如果是每个学生的总成绩和每门课的最高分呢

img

改成

img

错误见注释,供参考:

#include<stdio.h>
int main(void)
{
    int id[5] = { 1001,1002,1003,1004,1005 };
    int scores[5][3] = { {90,80,85},{70,75,80},{65,70,75},{85,50,60},{80,90,70} };
    int sum[5];
    double max[3];
    int i, j;
    for (i = 0; i < 5; i++)
    {
        sum[i] = (double)(scores[i][0] + scores[i][1] + scores[i][2]); //+ scores[i][3]); 这里三门功课,没有scores[i][3]
    }
    for (j = 0; j < 3; j++)
    {
        max[j] = scores[0][j];
        for (i = 0; i < 5; i++)
        {
            if (scores[i][j] > max[j])
            {
                max[j] = scores[i][j];
            }
        }
    }
    printf("学号\t数学\t语文\t外语\t总分\n");
    for (i = 0; i < 5; i++)
    {
        printf("%d\t", id[j]);
        for (j = 0; j < 3; j++)
        {
            printf("%d\t", scores[i][j]);
        }
        printf("%d\n", sum[i]);
    }
    printf("最高分\t");
    for (j = 0; j < 3; j++)
    {
        printf("%.0lf\t", max[j]);
    }
    return 0;
}

#include<stdio.h>
int main(void)
{
int id[5]={1001,1002,1003,1004,1005};
int scores[5][3]={{90,80,85},{70,75,80},{65,70,75},{85,50,60},{80,90,70}};
double sum[5];
double max[3];
int i,j;
for (i=0;i<5;i++)
{
sum[i]=scores[i][0]+scores[i][1]+scores[i][2];
}
for(j=0;j<3;j++)
{
max[j]=scores[0][j];
for(i=0;i<5;i++)
{
if(scores[i][j]>max[j])
{
max[j]=scores[i][j];
}
}
}
printf("学号\t数学\t语文\t外语\t总分\n");
for (i=0;i<5;i++)
{
printf("%d\t",id[j]);
for(j=0;j<3;j++)
{
printf("%lf\t",scores[i][j]);
}
printf("%d\n",sum[i]);
}
printf("最高分\t");
for(j=0;j<3;j++)
{
printf("%lf\t",max[j]);
}
return 0;
}
是哪出错了

可以参考这个
https://wenku.baidu.com/view/4513e2f687254b35eefdc8d376eeaeaad1f31615.html