在给定的代码中,存在以下问题:
1. 在第二个排序循环中,判断语句if(a[j][0]==a[j+1][0])应该修改为if(a[j][0]==a[j+1][0] && a[j][1]>a[j+1][1]),以确保只有成绩相等且年级较低的学生才会进行交换。
修正后的代码如下:#include<bits/stdc++.h>using namespace std;int main() { int n, a[200][2], i, j, t; cin >> n; for (i = 0; i < n; i++) { cin >> a[i][0] >> a[i][1]; } for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (a[j][0] < a[j + 1][0]) { t = a[j][0]; a[j][0] = a[j + 1][0]; a[j + 1][0] = t; } } } for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (a[j][0] == a[j + 1][0] && a[j][1] > a[j + 1][1]) { t = a[j][1]; a[j][1] = a[j + 1][1]; a[j + 1][1] = t; } } } for (i = 0; i < n; i++) { int s = 0; for (j = 0; j < i; j++) { if (a[i][1] > a[j][1]) { s++; } } cout << s << endl; } return 0;}
请注意,本回答仅修正给定代码中的错误,但无法保证代码的功能和逻辑正确性。
球一个最佳答案谢谢啦!这对我非常重要!   |