U411934 统计分数plus+

本题为本人原创,请勿抄袭。

难度:普及/提高-

题目背景

在你的帮助下,老师成功地完成了成绩的统计。但是,教委又说要添加口语听说成绩,并且还要写出每科的排名和平均分。老师们有彻夜难眠。

题目描述

这是一题将结构体和排序结合在一起的题。

输入格式

  • 第一行,学生的数量。
  • 第二行,学生的名字。
  • 第三行,学生的语文、数学、英语听说、英语笔试、历史、生物、地理、政治、信息学奥林匹克竞赛成绩。

输出格式

  • 第一行,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:560

name:xiaohuang
rank:1
final_soccer:560

average_score:560

 

说明/提示

  1. 提示
  • 1
  1. 说明
  • 会出现分数相等、总分相同的情况
  • 如果总分相同,先输出后输入的人的姓名,如样例1.

思路

很明显,这道题是一道将结构体和排序相结合的一道题。

首先,我们需要定义一个结构体,至于定义什么,题目要求什么就定义什么。

struct student{
    string name;
    int a,b,c,d,e,f,g,h;
    int s;
    int rank;
    int index; 
}a[11];

然后,我们将七科成绩存入结构体中。

for(int i=0;i>a[i].name;
        cin>>a[i].a>>a[i].b>>a[i].c>>a[i].d>>a[i].e>>a[i].f>>a[i].g>>a[i].h;
        a[i].s=a[i].a+a[i].b+a[i].c+a[i].d+a[i].e+a[i].f+a[i].g+a[i].h;        
    }

接下来就是最重要的部分--排序。

bool cmp(student x,student y){
    return x.s
sort(a,a+n,cmp);
for(int i=0;i

 最后,题目要求:如果总分相同,先输出后输入的人的姓名。所以,我们可以用倒序输出来解决,如下:

for(int i=n-1;i>=0;i--){
        cout<

 完整代码

#include
using namespace std;
int n,sum=1,dum=0;
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.s>n;
	for(int i=0;i>a[i].name;
		cin>>a[i].a>>a[i].b>>a[i].c>>a[i].d>>a[i].e>>a[i].f>>a[i].g>>a[i].h;
		a[i].s=a[i].a+a[i].b+a[i].c+a[i].d+a[i].e+a[i].f+a[i].g+a[i].h;		
	}
	sort(a,a+n,cmp);
	for(int i=0;i=0;i--){
		cout<<"name:"<

你可能感兴趣的:(算法,数据结构,开发语言,c++,前端,图论)