/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称:score.cpp
* 作 者:李蒙
* 完成日期: 2013 年 03 月 12 日
* 版本号: v1.0
* 输入描述:已经在程序中初始化
* 问题描述:用结构体数组做计算,把每名同学的总分排序,并输出排序后的成绩单。
* 输出:
*/
#include <iostream>
#include <fstream>
using namespace std;
struct Score
{
char num[12];
char name[12];
double C;
double math;
double English;
double Total;
};
int main()
{
Score T[300];
int sum=0,i,j;
ifstream in("score.txt",ios::in);
if(!in)
{
cerr<<"open error!"<<endl;
exit(1);
}
while(!in.eof())
{
in>>T[sum].num>>T[sum].name>>T[sum].C>>T[sum].math>>T[sum].English;
sum++;
}
in.close();
for(i=0;i<sum;++i)
{
T[i].Total=T[i].C+T[i].math+T[i].English;
}
Score Total;
for(i=1;i<sum;++i)
{
for(j=0;j<sum-i;++j)
{
if(T[j].Total<T[j+1].Total)
{
Total=T[j+1];
T[j+1]=T[j];
T[j]=Total;
}
}
}
int people=1;
for(i=0;i<sum;++i)
{
while(T[i].C>=60&&T[i].math>=60&&T[i].English>=60&&people<=30)
{
cout<<T[i].num<<" "<<T[i].C<<" "<<T[i].math<<" "<<T[i].English<<" "<<T[i].Total<<endl;
++people;
break;
}
}
return 0;
}输出结果:![](https://img-my.csdn.net/uploads/201303/12/1363097785_6521.jpg)
心得体会:正在熟悉用结构体解决问题!