记录自己的做题历程!
题目:
https://pintia.cn/problem-sets/994805260223102976/problems/994805321640296448
#include<iostream>
using namespace std;
struct student{
string name;
string sn;
int score;
};
int main(){
int n,max=0,min=0,maxn=0,minn=10000;
cin>>n;
student *arr=new student[n];
for(int i=0;i<n;i++){
cin>>arr[i].name>>arr[i].sn>>arr[i].score;
if(arr[i].score>maxn){
maxn=arr[i].score;
max=i;
}
if(arr[i].score<minn){
minn=arr[i].score;
min=i;
}
}
cout<<arr[max].name<<" "<<arr[max].sn<<endl;
cout<<arr[min].name<<" "<<arr[min].sn<<endl;
return 0;
}
题目简单,思路没有问题,改正几个编译错误
1.结构体的大括号后面需要有分号
2.n是不确定的,做一个动态的结构数组,格式,student *arr=new student[n];
记得最后要释放 delete []arr;
可以优化的地方:
1.高级一点的思路,通过sort去排序
#include<iostream>
#include<algorithm>//Header file of sort;
using namespace std;
struct student{
string name;
string sn;
int score;
};
bool comp(student &a,student &b){//rule
return a.score<b.score;
}
int main(){
int n;
cin>>n;
student *arr=new student[n];
for(int i=0;i<n;i++){
cin>>arr[i].name>>arr[i].sn>>arr[i].score;
}
sort(arr,arr+n,comp);//sort farmat ;For small to large
cout<<arr[n-1].name<<" "<<arr[n-1].sn<<endl;
cout<<arr[0].name<<" "<<arr[0].sn<<endl;
delete []arr;
return 0;
}