第17周 项目6 读取学生成绩及筛选

来源:互联网 发布:如何获取网页数据 编辑:程序博客网 时间:2024/05/02 16:06
问题及代码:
/*。*Copyright(c)2014,烟台大学计算机学院*All right reserved,*文件名:test.cpp*作者:liu_feng_zi_*完成日期:2014年12月25日*版本号:v1.0*问题描述:文件读取学生成绩及筛选*输入描述:*程序输出:*/#include <iostream>#include <fstream>#include <cstdlib>#include <cstring>using namespace std;struct Student{   char num[13];   char name[10];   int cpp;   int math;   int english;   int grade;};void output(Student s[],int n);void sort1(Student s[],int n);void outputExcellent(Student s[],int n);int main(){    int i,stuNum;    Student stu[10000];    ifstream infile("score.txt",ios::in); //以输入的方式打开文件    if(!infile)   //测试是否成功打开    {        cerr<<"open error!"<<endl;        exit(1);    }    i=0;    while(infile>>stu[i].num>>stu[i].name>>stu[i].cpp>>stu[i].math>>stu[i].english)    {        stu[i].grade=stu[i].cpp+stu[i].math+stu[i].english;        ++stuNum;        ++i;    }    infile.close();    output(stu,stuNum);    cout<<"按总分降序排序后得成绩单:"<<endl;    sort1(stu,stuNum);    output(stu,stuNum);    cout<<"获得奖学金的名单:"<<endl;    outputExcellent(stu,stuNum);    return 0;}void output(Student s[],int n){    int i;    cout<<"学号"<<'\t'<<'\t'<<"姓名"<<'\t'<<"CPP"<<'\t'<<"数学"<<'\t'<<"英语"<<'\t'<<"总分"<<endl;     for(i=0;i<n;i++)     {       cout<<s[i].num<<'\t'<<s[i].name<<'\t'<<s[i].cpp<<'\t';       cout<<s[i].math<<'\t'<<s[i].english<<'\t'<<s[i].grade<<endl;     }}void sort1(Student s[],int n){    int i,j;    Student t;    for(i=0; i<n-2; i++)        for(j=0; j<n-i-1; j++)        {            if(s[j].grade<s[j+1].grade)            {                t=s[j];                s[j]=s[j+1];                s[j+1]=t;            }        }}void outputExcellent(Student s[],int n){   int i;   for(i=0;i<30;i++)        cout<<s[i].num<<'\t'<<s[i].name<<endl;   for(i=30;i<n;i++)    if(s[29].grade==s[i].grade)   cout<<s[i].num<<'\t'<<s[i].name<<endl;}

运行结果:
0 0