2_3

来源:互联网 发布:java scanner是什么 编辑:程序博客网 时间:2024/05/16 18:50
/** 程序的版权和版本声明部分* Copyright (c)2013, 烟台大学计算机学院学生* All rightsreserved.* 文件名称:score.cpp                           * 作    者:纪子龙                            * 完成日期:2013  年3   月 8  日* 版本号: v1.0      * 输入描述:无* 问题描述:无* 输出:无*/#include <iostream>#include <fstream>   //操作文件必写using namespace std;struct Score{    char num[14];char nam[20];int cpp;int math;int english;int sumg;};void sort1(Score p[],int n);void sort2(Score p[],int n);void output(Score p[],int n);int main(){int i=0;Score score[200];//以输入的方式(ios::in)打开文件,注意score.txt必须在文件夹中存在ifstream infile("score.txt",ios::in);//测试是否成功打开,打开失败时(如要读的数据文件不存在)退出if(!infile)   {cerr<<"open error!"<<endl;exit(1);}while(!infile.eof()){   infile>>score[i].num>>score[i].nam>>score[i].cpp>>score[i].math>>score[i].english;score[i].sumg=score[i].cpp+score[i].math+score[i].english;i++;}infile.close();sort1(score,i);cout<<"按总分降序排序后:"<<endl;    output(score,i);return 0;}void sort1(Score p[],int n){int i,j;Score t[200];for(j=0;j<n;j++)for(i=0;i<n-j;i++)if(p[i].sumg>p[i+1].sumg){strcpy(t[i].num,p[i].num);strcpy(p[i].num,p[i+1].num);strcpy(p[i+1].num,t[i].num);strcpy(t[i].nam,p[i].nam);strcpy(p[i].nam,p[i+1].nam);strcpy(p[i+1].nam,t[i].nam);t[i].cpp=p[i].cpp;p[i].cpp=p[i+1].cpp;p[i+1].cpp=t[i].cpp;t[i].math=p[i].math;p[i].math=p[i+1].math;p[i+1].math=t[i].math;t[i].english=p[i].english;p[i].english=p[i+1].english;p[i+1].english=t[i].english;p[i].sumg=p[i+1].sumg;p[i+1].sumg=t[i].sumg;t[i].sumg=p[i].sumg;}}void output(Score p[],int n){int i;for(i=0;i<n;i++)cout<<p[i].num<<" "<<p[i].nam<<" "<<p[i].cpp<<" "<<p[i].english<<" "<<p[i].math<<" "<<p[i].sumg<<endl;return ;}运行结果: