看看这个代码有什么问题

#include <stdio.h>
int main()
{
int n,i;
printf("输入学生人数\n");
scanf("%d",&n);
int a[n][5]={0};

for(i=0;i<n;i++)
{
    printf("输入第%d位同学的语数英成绩\n",i+1);
    scanf("%d%d%d",&a[i][1],&a[i][2],&a[i][3]);
    a[i][0]=i+1;
    a[i][4]=a[i][1]+a[i][2]+a[i][3];

 } 
    printf("序号  语文  数学  英语  总分\n");
    printf("%d  ",a); 
return 0;

}//打印出来是6487472


#include <stdio.h>
#define N 100
int main() {
    int n,i;
    printf("输入学生人数\n");
    scanf("%d",&n);
    int a[N][5]= {0};
    for(i=0; i<n; i++) {
        printf("输入第%d位同学的语数英成绩\n",i+1);
        scanf("%d%d%d",&a[i][1],&a[i][2],&a[i][3]);
        a[i][0]=i+1;
        a[i][4]=a[i][1]+a[i][2]+a[i][3];

    }
    printf("序号\t语文\t数学\t英语\t总分\n");
    for(i = 0; i<n; i++) {
        printf("%d\t%d\t%d\t%d\t%d\n",a[i][0],a[i][1],a[i][2],a[i][3],a[i][4]);
    }
//    printf("%d  ",a); 这里直接输出应该是地址
    return 0;
}

有用希望采纳,欢迎关注哟

大哥啊,你的空格呢?
输出完一个数据就要空格啊,不然会连在一起!
希望对题主有帮助!

部分C语言编译器不支持变长数组定义,你只能在程序最开始define一个N变量写入数组,或者直接用数学来定义数组
int arr[n][5]这样写是不行的!
期待采纳