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

(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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值