题目描述
现在给出n个同学的姓名,语文成绩,数学成绩。要求你按两科总分从高到低的顺序输出同学的姓名和总分。1<n<100(用结构体做)
(保证没有总分相同的同学)
输入/输出例子1
输入:
4
gaoxiang 78 96
wangxi 70 98
liujia 90 87
zhangjin 77 90输出:
liujia 177
gaoxiang 174
wangxi 168
zhangjin 167
参考答案
#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++){bool f=false;for(int j=n;j>i;j--){if(a[j].sum>a[j-1].sum){swap(a[j],a[j-1]);f=true;}}if(f==false)break;}for(int i=1;i<=n;i++){printf("%s %d\n",a[i].name.c_str(),a[i].sum);}return 0; }