输入n组学生信息,包括姓名、绩点(双精度浮点数), 排序输出。
排序规则:
先按绩点高到低,绩点相同的情况下,按姓名的字典序从小到大。
#include <iostream> #include <iomanip> #include <cstdio> #include <cstring> using namespace std; struct Student { char name[12]; _____(1)_____; }; bool cmp(const Student* a1, const Student* a2) { if(a1->gpa!=a2->gpa) return a1->gpa>a2->gpa; return strcmp(a1->name,a2->name)<0; } void sort(Student* p, int n) { for(int i=0;i<n-1;++i) { _____(2)______; for(int j=i+1;j<n;++j) if(cmp(_____(3)_______)==true) k=j; Student t=p[i]; p[i]=p[k]; p[k]=t; } } int main() { //freopen("titan2.out","w",stdout); int n; cin>>n; _____(4)_______; for(int i=0;i<n;++i) cin>>st[i].name>>st[i].gpa; _____(5)______; cout<<setprecision(2)<<fixed; for(int i=0;i<n;++i) cout<<left<<setw(11)<<st[i].name<<st[i].gpa<<"\n"; delete [] st; return 0; }