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
样例输出
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
描述
现在有一个班级的学生的成绩,要求进行统计。假定该班级有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