不备案网站,学校网站平台建设,免费搭建视频网站,网络品牌推广案例本题为本人原创#xff0c;请勿抄袭。
难度#xff1a;普及/提高-
题目背景
在你的帮助下#xff0c;老师成功地完成了成绩的统计。但是#xff0c;教委又说要添加口语听说成绩#xff0c;并且还要写出每科的排名和平均分。老师们有彻夜难眠。
题目描述
这是一题将结…本题为本人原创请勿抄袭。
难度普及/提高-
题目背景
在你的帮助下老师成功地完成了成绩的统计。但是教委又说要添加口语听说成绩并且还要写出每科的排名和平均分。老师们有彻夜难眠。
题目描述
这是一题将结构体和排序结合在一起的题。
输入格式
第一行学生的数量。第二行学生的名字。第三行学生的语文、数学、英语听说、英语笔试、历史、生物、地理、政治、信息学奥林匹克竞赛成绩。
输出格式
第一行name:学生的名字。第二行rank:学生的总排名。第三行final_soccer:学生的总分。换行第……行average_score平均分
输入输出样例
输入 #1 2
xiaohuang
80 80 40 40 80 80 80 80
xiaorui
81 79 40 60 60 80 99 61 输出 #1 name:xiaorui
rank:1
final_soccer:560name:xiaohuang
rank:1
final_soccer:560average_score:560说明/提示
提示
1n10
说明
会出现分数相等、总分相同的情况如果总分相同先输出后输入的人的姓名如样例1.
思路
很明显这道题是一道将结构体和排序相结合的一道题。
首先我们需要定义一个结构体至于定义什么题目要求什么就定义什么。
struct student{string name;int a,b,c,d,e,f,g,h;int s;int rank;int index;
}a[11];
然后我们将七科成绩存入结构体中。
for(int i0;in;i){cina[i].name;cina[i].aa[i].ba[i].ca[i].da[i].ea[i].fa[i].ga[i].h;a[i].sa[i].aa[i].ba[i].ca[i].da[i].ea[i].fa[i].ga[i].h; }
接下来就是最重要的部分--排序。
bool cmp(student x,student y){return x.sy.s;
}
sort(a,an,cmp);
for(int i0;in;i)a[i].ranki; 最后题目要求如果总分相同先输出后输入的人的姓名。所以我们可以用倒序输出来解决如下
for(int in-1;i0;i--){couta[i].nameendl;coutsumendl;couta[i].sendl;if(a[i].s!a[i-1].s)sum;
} 完整代码
#includebits/stdc.h
using namespace std;
int n,sum1,dum0;
struct student{string name;int a,b,c,d,e,f,g,h;int s;int rank;int index;
}a[11];
bool cmp(student x,student y){return x.sy.s;
}
int main(){cinn;for(int i0;in;i){cina[i].name;cina[i].aa[i].ba[i].ca[i].da[i].ea[i].fa[i].ga[i].h;a[i].sa[i].aa[i].ba[i].ca[i].da[i].ea[i].fa[i].ga[i].h; }sort(a,an,cmp);for(int i0;in;i)a[i].ranki;for(int in-1;i0;i--){coutname:a[i].nameendl;coutrank:sumendl;coutfinal_soccer:a[i].sendl;coutendl;if(a[i].s!a[i-1].s)sum;}for(int i0;in;i){duma[i].sdum;}coutaverage_score:dum/n;return 0;
}