作者:指针不指南吗
专栏:算法刷题🐾或许会很慢,但是不可以停下来🐾
文章目录
- 题目
- 题解
- 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