成绩排行:从Score.txt文件读取学生信息,对其进行排序,按回答题数从大到小排,若相等,按分数从小到大排
#include<iostream> #include<fstream> //引用文件输入输出库 #include<string> #include<algorithm> using namespace std; struct Score{ string ID; int question_num;//问题数 int score; friend bool operator <(Score a,Score b) //重载小于号,定义排序规则 { if(a.question_num != b.question_num) return a.question_num>b.question_num; else return a.score<b.score; } }Stu_score[100]; int main() { ifstream infile; int i = 0; infile.open("Score.txt",ios::in);//打开文件,文件目录可以是.cpp文件所在目录,也可以是指定的绝对路径 if(!infile) //打开失败 { cout<<"open failed"<<endl; exit(1); } while(!infile.eof()) { infile>>Stu_score[i].ID>>Stu_score[i].question_num>>Stu_score[i].score;//文件流输入结构体中 i++; } sort(Stu_score,Stu_score+i);//排序 for(int j=0;j<i;j++) cout<<j+1<<" "<<Stu_score[j].ID<<" "<<Stu_score[j].question_num<<" "<<Stu_score[j].score<<endl; return 0; }