4.
试题五(共15分)阅读以下说明和C++代码,将应填入(n)处的语句或语句成分写在答题纸的对应栏内。【说明】某数据文件students.txt的内容为100名学生的学号和成绩,下面的程序将文件中的数据全部读入对象数组,按分数从高到低进行排序后选出排名前30%的学生。【C++代码】#include#include#includeusingnamespacestd;classStudent{private:stringsNO;//学号intcredit;//分数public:Student(stringa,intb){sNO=a;credit=b;}Student(){}intgetCredit();voidout();};(1)::getCredit(){returncredit;}(2)::out(){cout<<"SNO:"<<sNO<<",Credit="<<credit<<endl;}classSortStudent{public:voidsort(Student*s,intn);SortStudent(){}};voidSortStudent::sort(Student*s,intn){for(inti=0;i<n-1;i++){for(intj=i+1;j<n;j++){if(s[i].(3)<s[j].(4)){Studenttemp=s[i];s[i]=s[j];s[j]=temp;}}}}intmain(intargc,char*argv[]){constintnumber=100;//学生总数ifstreamstudents;students.open("students.txt");if(!students.is_open()){throw0;}Student*testStudent=(5)[number];intk=0;strings;while(getline(students,s,'\n')){//每次读取一个学生的学号和成绩Studentstudent(s.substr(0,s.find(',')),atoi(s.substr(s.find(',')+1).c_str()));testStudent[k++]=student;}students.close();(6);ss.sort(testStudent,k);cout<<"top30%:"<<endl;for(k=0;k<number*0.3;k++){testStudent[k].out();}delete[]testStudent;return0;}[15分]