#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;
}

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]没有值,所以会出现乱码。楼上的解法是对的