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--)