#include<fstream>
#include<iostream>
using namespace std;
struct Student
{
char num[13];
char name[14];
int score[4];
}stu[300];
void reward(Student [],int );
void sort(Student [],int );
void output(Student [],int );
int main()
{
int i,j,stuNum=0;
ifstream infile("score.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
while(!infile.eof())
{
for(i=0;i<stuNum;i++)
{
infile>>stu[i].num>>stu[i].name;
for(j=0;j<3;j++)
{
infile>>stu[i].score[j];
}
}
++stuNum;
}
infile.close();
for(i=0;i<stuNum;i++)
{
for(j=0;j<3;j++)
student[i].score[4]=student[i].score[j]+student[i].score[j]+student[i].score[j];
}
cout<<"获得奖学金学生的名单:"<<endl;
reward(student,stuNum);
cout<<endl;
cout<<"按照总分排序为:"<<endl;
sort(student,stuNum);
output(student,stuNum);
return 0;
}
void sort(Student [],int stuNum)
{
int i,j;
Student t;
for(j=1;j<stuNum;j++)
for(i=0;i<=stuNum-j-1;i++)
if(student[i].score[4]<student[i+1].score[4])
{
t=student[i];
student[i]=student[i+1];
student[i+1]=t;
}
return;
}
void reward(Student [],int stuNum)
{
int i,j;
sort(student,stuNum);
for(i=0;i<stuNum;i++)
{
if(student[i].score[0]>=60&&student[i].score[1]>=60&&student[i].score[2]>=60)
j++;
}
for(j=0;j<=30;j++)
{
cout<<student[j].score[2]<<" ";
}
return;
}
void output(Student [],int stuNum)
{
for(i=0;i<stuNum;i++)
{
infile>>stu[i].num>>stu[i].name;
for(j=0;j<3;j++)
{
infile>>stu[i].score[j];
}
}
return;
}
第二周上机任务项目2-读取数据到结构体数组 (另一个版本)
最新推荐文章于 2020-05-16 10:13:49 发布