作者:指针不指南吗
专栏:算法刷题🐾或许会很慢,但是不可以停下来🐾
文章目录
- 题目
- 题解
- try1 编译错误
- 正确题解
- 总结
题目
题目链接
题解
try1 编译错误
#include<bits/stdc++.h>
using namespace std;typedef struct{int id,s,k;
}per_number[1100];bool cmp(per_number a,per_number b){return a.s>b.s;
}int main(){int n;cin>>n;for(int i=0;i<n;i++){cin>>per_number[i].id>>per_number[i].s>>per_number[i].k;}sort(per_number,per_number+n,cmp);int m;cin>>m;while(m--){int x;cin>>x;cout<<per_number[x].id<<' '<<per_number[x].k<<endl;}return 0;
}
错误
正确题解
使用结构体把每个学生的id 测试号和考试号 存起来
由于测试号是1~n,所以将数组按照测试号进行排序
直接输出per[s].id和per[s].k即可。
#include<bits/stdc++.h>
using namespace std;typedef struct {string id;int s, k;
} per_number;per_number per[10100];bool cmp(const per_number &a, const per_number &b) {return a.s < b.s;
}int main() {int n;cin >> n;// 从0开始读取,以匹配C++数组习惯for (int i = 0; i < n; i++) {cin >> per[i].id >> per[i].s >> per[i].k;}// 排序从per[0]到per[n-1]sort(per, per + n, cmp);int m;cin >> m;while (m--) {int x;cin >> x;cout << per[x-1].id << ' ' << per[x-1].k << endl;}return 0;
}
总结
- 结构体typedef 不能和结构体数组同时定义
- 数组下标要与题目一致,否则-1或+1
- 段错误,id不能用int 要用string