今天是信息课,小皮正在电脑上玩MC。可是电脑忽然关机了。回头一看,老师那愤怒的眼神注视着小皮。老师把小皮叫道讲台上,说,你只要帮我把这次期中考试的成绩统计出来,我就放了你。否则,你懂的。
请你编写一个程序,帮帮小皮吧
输入
第一行 是学生个数n,0<n<100
往下n行是每个学生的信息,第一个是名称,第二个是学号,第三个是语文成绩,第四个是数学成绩,第五个是英语成绩。每个信息以空格隔开,每个学生以换行隔开。
输出
按照从大到小分别输出学生排名,名称,学号,总分,语文成绩,数学成绩,英语成绩。
输入样例
3
小皮 1 99 100 100
小红 2 100 100 100
小明 3 0 0 0
输出样例
1:小红 2 总分:300 语文:100 数学:100 英语:100
2:小皮 1 总分:299 语文:99 数学:100 英语:100
3:小明 3 总分:0 语文:0 数学:0 英语:0
以下是我的代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct student
{
int score;//总分
string name;//名称
int student_number;//学号
int chinese;//语文成绩
int math;//数学成绩
int english;//英语成绩
};
bool cmp(student x,student y)//用于比较结构体
{
return x.score>y.score;
}
int main()
{
student a[100];
int b;
cin>>b;
for(int i=0;i<b;i++)
{
cin>>a[i].name>>a[i].student_number>>a[i].chinese>>a[i].math>>a[i].english;
}
for(int i=0;i<b;i++)
{
a[i].score=a[i].chinese+a[i].math+a[i].english;//总分
}
sort(a,a+b,cmp);
for(int i=0;i<(b-1);i++)
{
cout<<(i+1)<<":"<<a[i].name<<" "<<a[i].student_number<<" 总分:"<<a[i].score<<" 语文:"<<a[i].chinese<<" 数学:"<<a[i].math<<" 英语:"<<a[i].english<<"\n";
}
cout<<b<<":"<<a[b-1].name<<" "<<a[b-1].student_number<<" 总分:"<<a[b-1].score<<" 语文:"<<a[b-1].chinese<<" 数学:"<<a[b-1].math<<" 英语:"<<a[b-1].english;//处理多输出的换行符
return 0;
}