机试算法题(2)--成绩排序

1.题目描述:

    有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。
输入:
    测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的N行包括N个学生的数据。
每个学生的数据包括姓名(长度不超过100的字符串)、年龄(整形数)、成绩(小于等于100的正数)。
输出:
    将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序。
然后输出学生信息,按照如下格式:
姓名 年龄 成绩
样例输入:
3
abc 20 99

bcd 19 97

bed 20 97

样例输出:
bcd 19 97

bed 20 97

abc 20 99

2.代码:

/***
作者:一叶扁舟
作用:根据成绩,姓名 ,成绩排序
时间:20:12 2017/4/20
***/



#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;

struct Student{
	//名字
	char name[101];
	//年龄
	int age;
	//分数
	int score;

}buffer[1000];

bool cmp(Student studentA, Student studentB){
	//如果分数不相等,则分数小的在前
	if (studentA.score != studentB.score)
		return studentA.score < studentB.score;
	int temp = strcmp(studentA.name,studentB.name);
	if (temp != 0)
		return temp < 0;//分数相等,名字小的在前
	else
	//分数相等,且名字相等的,则年龄小的在前
		return studentA.age < studentB.age;

}

void  main(){  

	int inputNum;

	while (scanf("%d", &inputNum) != EOF){
		for (int i = 0; i < inputNum; i++){
			scanf("%s %d %d",buffer[i].name,&buffer[i].age,&buffer[i].score);
		}
		//排序
		sort(buffer, buffer+inputNum, cmp);
		//数据结果
		for (int i = 0; i < inputNum; i++){
			printf("%s %d %d\n",buffer[i].name,buffer[i].age,buffer[i].score);
		}
	}
	
}






3.效果图:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为OD机试-2023真主要考察了以下几个方面的知识点: 1. 数据结构与算法目涉及了常见的数据结构和算法,如数组、链表、树、图、排序、搜索等。要求考生熟悉这些数据结构的基本操作和常用算法的实现方法。 2. 编程语言:目要求使用C++或Java语言完成编程任务,要求考生熟悉相应语言的语法和常用的库函数使用方法。 3. 网络通信:目涉及了网络通信相关的知识点,如TCP/IP协议、HTTP协议、socket编程等。要求考生了解网络通信的基本概念和实现方式。 4. 操作系统:目要求考生熟悉操作系统相关的知识,如进程管理、内存管理、文件系统等。要求考生了解操作系统的基本功能和实现原理。 5. 数据库:目涉及了数据库相关的知识点,如SQL语句的编写、数据库的设计和优化等。要求考生具备数据库的基本操作和设计能力。 6. 设计模式:目要求考生能够根据给定的需求设计相应的对象和类,并且符合设计模式的原则。要求考生熟悉常见的设计模式和其应用场景。 7. 系统设计与架构:目要求考生从整体上设计和实现一个系统,并考虑系统的性能、可扩展性等因素。要求考生了解系统设计的基本原则和方法。 以上是华为OD机试-2023真的一些考点分类。考生在复习备考时,可以根据这些考点有针对性地进行学习和练习,提升自己的应试能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值