题目描述
现在给出n个同学的姓名,语文成绩,数学成绩。要求你按两科总分从高到低的顺序输出同学的姓名和总分。如果总分相同,则语文分数高的排在前。1<n<100。
输入/输出例子1
输入:
4
gaoxiang 78 96
wangxi 70 98
liujia 90 87
zhangjin 78 90输出:
liujia 177
gaoxiang 174
zhangjin 168
wangxi 168
参考答案
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; const int N=101; struct student { string name; int ch; int math; int sum=0; void Sum() { sum=ch+math; } }; int main() { int n; student a[N]; scanf("%d",&n); for(int i=1;i<=n;i++) { cin>>a[i].name>>a[i].ch>>a[i].math; a[i].Sum(); } for(int i=1;i<=n-1;i++) { for(int j=n;j>i;j--) { if(a[j].sum>a[j-1].sum) { swap(a[j],a[j-1]); } else if(a[j].sum==a[j-1].sum) { if(a[j].ch>a[j-1].ch) { swap(a[j],a[j-1]); } } } } for(int i=1;i<=n;i++) { printf("%s %d\n",a[i].name.c_str(),a[i].sum); } return 0; }