NOI第1.10的第4题代码再不出错误

NOI第1.10的第4题代码再不出错误
原题在http://noi.openjudge.cn/ch0110/04/

#include
#include
using namespace std;
int main(){
    int n;
    cin>>n;
    int a[n][6];
    int i,l;
    for(i=0;i0;l<3;l++) cin>>a[i][l];  //a[][0]语文,a[][1]数学,a[][2]英语 
    }
    for(i=0;i3]=a[i][0]+a[i][1]+a[i][2];   //a[][3]是总分 
        a[i][4]=i+1;                      //a[][4]是学号 
    }
    for(i=0;i0;l-1;l++){
            if(a[l][3]>a[l+1][3]) {swap(a[l][3],a[l+1][3]);swap(a[l][4],a[l+1][4]);}
            else if(a[l][3]==a[l+1][3]&&a[l][0]>=a[l+1][0]) {swap(a[l][4],a[l+1][4]);}
            else continue;
        }
    }
    for(i=n-1;i>=n-5;i--) cout<4]<<" "<3]<

交换的时候,需要把语文成绩、总成绩、学号一起交换。代码修改如下:

#include<iostream>
#include<algorithm>
using namespace std;
int main() {
    int n;
    cin >> n;
    int a[n][6];
    int i, l;
    for (i = 0; i < n; i++) {
        for (l = 0; l < 3; l++) cin >> a[i][l];  //a[][0]语文,a[][1]数学,a[][2]英语 
    }
    for (i = 0; i < n; i++) {
        a[i][3] = a[i][0] + a[i][1] + a[i][2];   //a[][3]是总分 
        a[i][4] = i + 1;                      //a[][4]是学号 
    }
    for (i = 0; i < n; i++) {
        for (l = 0; l < n - i - 1; l++) {
            if (a[l][3] > a[l + 1][3]) { swap(a[l][0], a[l + 1][0]); swap(a[l][3], a[l + 1][3]); swap(a[l][4], a[l + 1][4]); }
            else if (a[l][3] == a[l + 1][3] && a[l][0] >= a[l + 1][0]) { swap(a[l][0], a[l + 1][0]); swap(a[l][3], a[l + 1][3]); swap(a[l][4], a[l + 1][4]); }
            else continue;
        }
    }
    for (i = n - 1; i >= n - 5; i--) cout << a[i][4] << " " << a[i][3] << endl;
}


for(i=n-1;i>=n-5;i--)
改为
for(i=n-1;i>=0;i--)

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632