为什么有乱码c++ 我做的一个关于排成绩的代码


#include <iostream>
using namespace std;
int main()
{
    int i, j, k, t;
   unsigned int sum;
    int a[4][5];
    for (i = 0; i < 3; i++)
        for (j = 0; j < 4; j++)
            cin >> a[i][j];
    for (i = 0; i < 3; i++)
    {
        sum = 0;
        for (j = 1; j < 4; j++)
        {
            sum = sum + a[i][j];
        }
        a[i][4] = sum;
    }
    for (j = 1; j < 5; j++) {
        sum = 0;
        for (i = 0; i < 3; i++)
        {
            sum = sum + a[i][j];
        }
        a[3][j] = sum / 3;
    }
    for (i = 0; i < 2; i++)
    {
        k = i;
        for (j = i + 1; j < 3; j++)
        {
            if (a[k][4] < a[j][4])
                k = j;
        }
        if (k != i)
            for (j = 0; j < 5; j++)
            {
                t = a[i][j];
                a[i][j] = a[k][j];
                a[k][j] = t;
            }
    }
    cout << "序号" << "\t" << "语文" << "\t" << "数学" << "\t" << "总分" << endl;
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 5; j++)
        {
            cout << a[i][j] << "\t";
            if (i == 3 && j == 0)cout << "平均分" << "\t";
        }
        cout << endl;
    }
    return 0;

}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/166339290436144.png "=600 #left")


    cout << "序号" << "\t" << "语文" << "\t" << "数学" << "\t" << "总分" << endl;
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 5; j++)
        {
            if (i == 3 && j == 0)cout << "平均分" << "\t";
            else cout << a[i][j] << "\t";
        }
        cout << endl;
    }
    return 0;
}

20行cout << a[i][j] << "\t";这一句那个数组执行到a[3][0]的时候a[3][0]没有值,所以会出现乱码。楼上的解法是对的