项目3-用结构体数组作计算

来源:互联网 发布:js 微信分享demo 编辑:程序博客网 时间:2024/05/16 01:12
(1)从文件中读出数据,存放到你定义的结构体数组中,即项目2(1);
(2)求出每名同学的总分(可以在读入过程中“顺便”计算);
(3)按总分排序(降序);
(4)输出排序后的成绩单;

(5)有30名同学可以获得奖学金,规则是总分高者优先,有挂科不能得奖学金。请输出可以得奖学金同学的名单。

#include <iostream>#include<fstream>#include<cstdlib>#include<iomanip>using namespace std;struct Score{char num[14];char name[10];int cpp;int math;int english;int sum;Score *next;friend istream &operator >>( istream &is, Score &a){is>>a.num>>a.name>>a.cpp>>a.math>>a.english;return is;}friend ostream &operator<<(ostream &os,const Score &a){os<<a.num<<" "<<left<<setw(6)<<a.name<<" "<<a.cpp<<" "<<a.math<<" "<<a.english<<"  "<<a.sum;return os;}};int main(){ifstream infile;infile.open("haohaoxuexi.txt");if(!infile){cerr<<"file can not open"<<endl; exit(1);}Score a[10];int i=0;Score rep;while(infile>>a[i]){a[i].sum=0;a[i].sum=a[i].cpp+a[i].math+a[i].english;i++;}    infile.close();     for(int j=0;j<10;j++)cout<<a[j]<<endl;     for(int i=0;i<9;i++)//冒泡排序法for(int j=0;j<9-i;j++) if(a[j].sum<a[j+1].sum){rep=a[j];a[j]=a[j+1];a[j+1]=rep;}cout<<endl;     for(int i=0;i<10;i++)cout<<a[i]<<endl;//输出排序后的名单     //输出前拿奖金(总分高,无挂科)     cout<<endl;     cout<<"拿奖学金的人名单:"<<endl;     int num=0;     for(int i=0;i<10;i++) { if(a[i].cpp>=60&&a[i].math>=60&&a[i].english>=60){cout<<a[i]<<endl;num++;}if(3==num)break; }return 0;}


0 0
原创粉丝点击