文件加结构体

来源:互联网 发布:印度崛起 知乎 编辑:程序博客网 时间:2024/05/19 00:15
#include <iostream>#include<fstream>#include<cstdlib>using namespace std;struct Student{   char num[13];   char name[10];   int cpp;   int math;   int english;   int grade;   double average;};void calculate(Student s[],int n);  //计算总分和均分,数据在s数组中,共有n个元素void sort1(Student [],int);      //按总分降序排序void outlist(Student [],int);     //输出成绩单void outputExcellent(Student s[],int n);  //输出优秀者:总分超285,单科不低于90int main(){    int i=0,stuNum=0;    Student stu[200];    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();    calculate(stu,stuNum);    cout<<"下面是成绩单:"<<endl;    outlist(stu,stuNum);    cout<<"优秀者名单:"<<endl;    outputExcellent(stu,stuNum);    //按总分降序排序后输出    sort1(stu,stuNum);    cout<<"按总分降序排序后:"<<endl;    outlist(stu,stuNum);    return 0;}void calculate(Student s[],int n){    int i;    for (i=0;i<n;i++)    {        s[i].grade=s[i].math+s[i].cpp+s[i].english;        s[i].average=s[i].grade/3;    }}void sort1(Student s[],int n){    int i,j,k;    for (i=0;i<n-1;i++)    {        for (j=0;j<i;j++)        {            if(s[i].grade>s[j].grade)            {                k=s[i].grade;                s[i].grade=s[j].grade;                s[j].grade=k;            }        }    }}void outlist(Student s[],int n){    int i;    cout<<"学号    姓名    C++  高数  英语  总分"<<endl;    for(i=0;i<n;i++)   {       cout<<s[i].num<<"    "<<s[i].name<<"    "<<s[i].cpp<<"  "<<s[i].math<<"  "<<s[i].english<<"  "<<s[i].grade<<endl;   }}void outputExcellent(Student s[],int n){    int i;    for(i=0;i<n;i++)    {        if(s[i].cpp>=90&&s[i].math>=90&&s[i].english>=90&&s[i].grade>285)        {            cout<<s[i].num<<"  "<<s[i].name<<endl;        }    }}


总算做出来了~~~~

0 0
原创粉丝点击