成绩管理系统

4827
描述
现在有一个班级的学生的成绩,要求进行统计。假定该班级有n(1<=n<=100)个同学,每个同学都有4门课程的成绩,现在要求统计每个学生的最高分,最低分,平均分,也要统计全班同学各课程的最高分,最低分和平均分,并要求根据平均分输出各学生的名次,名次从高到低,相同名称的在一行输出,用一个空格隔开。 


输入
输入只有一个班的学生的4门成绩,其中第一行为一个整数n,表示该班学生数,接下来有n行,每行第一个为一个单词,表示学生(英文名,不含空格),然后是4门课程的成绩,顺序是china,math,english,computer。 


输出
首先按顺序输出各学生的最高分、最低分、平均分,每个学生占一行,用一个空格隔开;最后根据平均分按名次从高到低输出名次及学生名,相同名次的在一行,按一开始姓名出现的顺序输出,用一空格隔开,均保留两位小数。 


样例输入
4
John 78.5 75.8 80 60
Sam 88 98.5 78.5 62
lisi 77 88 98 96
zhangsan 70 95 98 96

#include<iostream>
#include<string>
using namespace std;

class student{
private:
	double score[4],max,min;
public:
	double avr;
	string name;
	void set(){
		int i;
		double s=0;
		cin>>name;
		for(i=0;i<4;i++){
			cin>>score[i];
			s+=score[i];
			if(i==0){
				max=score[0];
				min=score[0];
				continue;
			}
			if(max<score[i]) max=score[i];
			if(min>score[i]) min=score[i];
		}
		avr=s/4;
	}
	void show(){
		cout<<name<<' ';
		printf("%.2f %.2f %.2f\n",max,min,avr);
	}
};

int main(){
	student person[100];
	int i,n,j;
	cin>>n;
	for(i=0;i<n;i++){
		person[i].set();
	}
	for(i=0;i<n;i++)
		person[i].show();
	for(i=0;i<n;i++){
		for(j=0;j<n-i-1;j++){
			if(person[j].avr<person[j+1].avr)
				swap(person[j],person[j+1]);
		}
	}
	for(i=1,j=0;j<n;i++){
		cout<<"第"<<i<<"名:";
		cout<<person[j].name;
		j++;
		while(person[j].avr==person[j-1].avr){
			cout<<" "<<person[j].name;
			j++;
		}
		cout<<endl;
	}
	return 0;
}


样例输出
John 80.00 60.00 73.58
Sam 98.50 62.00 81.75
lisi 98.00 77.00 89.75
zhangsan 98.00 70.00 89.75
第1名:lisi zhangsan
第2名:Sam

第3名:John



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值