题目描述
现在给出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; }