成绩排序

描述

给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。

输入 第一行为n (0 < n < 20),表示班里的学生数目;
接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。 输出 把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。 样例输入
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
样例输出
Joey 92
Hanmeimei 90 
Kitty 80
Tim 28

参考代码:

#include <string.h>
#include <string>
using std::string;

#include <iostream>
using namespace std;

struct student{
	char name[21];
	int score;
};

int Compare(student a, student b){
	int ret = 1;
	if (a.score > b.score){
		ret = 0;
	}
	else if (a.score == b.score) {
		if (strcmp(a.name,b.name)<=0){
			ret = 0;
		}
	}
	return ret;
}

void PrintSortResult(student *s,int num){
	for (int i =0;i<num;i++){
		cout << s[i].name << ' '<< s[i].score << endl;
	}
}

void StudentSort (student *s,int num){
	student tmp;
	for(int i=0 ; i < num-1;i++){
		for (int j=0;j<num-1-i;j++){
			if (Compare(s[j],s[j+1])){
				tmp = s[j];
				s[j] = s[j+1];
				s[j+1] = tmp ;
			}
		}
	}
}




int main()
{
//freopen("C:\\Users\\Administrator\\Desktop\\mooc.txt","r",stdin);
	int num;
	student s[20];
	cin >> num;
	int i;
	for (i =0;i<num;i++){
		cin >> s[i].name >>s[i].score;
	}
	StudentSort(s,num);
	PrintSortResult(s,num);
	return 0;
}


发布了24 篇原创文章 · 获赞 9 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览