中级光能
5517 考试成绩统计经验值:800
题目描述 Description
酷町堂举办了一次文件操作模拟赛,共有4道题目,现在要按照4道题目的平均分从高到低排序。如果分数相同,保持在输入中的顺序输出。
要求:求平均分要定义成一个返回值为double类型的结构体函数。
输入描述 Input Description
第一行,一个整数n,表示人数
接下来n行,每行有准考证号、第一题分数、第二题分数、第三题分数、第四题分数,准考证号是一个5位的字符串,由字母和数字构成
输出描述 Output Description
n行,每行一个排序后的准考证号
样例输入 Sample Input
5 BM001 100 0 0 100 BM002 100 20 80 80 BM003 100 100 0 100 BM004 100 100 100 0 BM005 100 100 100 100
样例输出 Sample Output
BM005 BM003 BM004 BM002 BM001
数据范围及提示 Data Size & Hint
n<=10000
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
string name;
double a,b,c,d;
double sum(){
return (double)(a+b+c+d)*1.0/4;
}
}a[10005];
bool cmp(node x,node y){
return x.sum()>y.sum();
}
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].a>>a[i].b>>a[i].c>>a[i].d;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].name<<endl;
}
return 0;
}
0分
中级天翼
- double sum(){
- return (yi+er+san+si)/4;
- }
- 以上在struct函数里
- 得定义一个string类型的名字,int类型的第一题,第二题,第三题,第四题
- if(x.sum()!=y.sum()){
- return 平均分从大到小//x.sum()>y.sum()
- }
- return 按照顺序排//x.id<y.id
- int main(){
- for循环输入名字第一题,第二题,第三题,第四题
- a[i].id=i;记录下标,按输入顺序输出;
- sort(a+1,a+n+1,cmp);
- for输出名字;
- }
- 记得别往了加头文件
- 我好久没上问答了,求求你,望采纳
- 结构体 chengji{
- 字符串 name;
- 实数 yi,er,san,si;
- 整数 id;
- 实数 sum(){
- 返回 (yi+er+san+si)/4;
- }
- }a[11000];
- 布尔 cmp(chengji x,chengji y){
- 如果(x.sum()!=y.sum()){
- 返回 x.sum()>y.sum();
- }
- 返回 x.id<y.id;
- }
ps:这题我今天刚刷过
打字不易,望采纳
缔造者之神
https://wenda.codingtang.com/questions/10549/
看第一个答案,有代码的那个