九度OJ 1061:成绩排序 (排序)
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:17158
解决:4798
- 题目描述:
-
有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
- 提示:
-
学生姓名的字母序区分字母的大小写,如A要比a的字母序靠前(因为A的ASC码比a的ASC码要小)。
思路:
用sort或qsort即可。
代码:
#include <stdio.h>
#include <string.h> struct student {
char name[100];
int age;
int score;
}; int main(void)
{
struct student a[1000];
struct student *b[1000];
struct student *z;
int shouldSwap;
int n, i, j; while (scanf("%d", &n) != EOF)
{
for (i=0; i<n; i++)
{
b[i] = &a[i];
scanf("%s%d%d", b[i]->name, &(b[i]->age), &(b[i]->score));
} //for (i=0; i<n; i++)
// printf("%s %d %d\n", b[i]->name, b[i]->age, b[i]->score); for (i=0; i<n-1; i++)
{
for (j=0; j<n-1-i; j++)
{
shouldSwap = 0;
if (b[j]->score > b[j+1]->score)
shouldSwap = 1;
else if (b[j]->score == b[j+1]->score)
{
if (strcmp(b[j]->name, b[j+1]->name) > 0)
shouldSwap = 1;
else if (strcmp(b[j]->name, b[j+1]->name) == 0)
{
if (b[j]->age > b[j+1]->age)
shouldSwap = 1;
}
}
if (shouldSwap)
{
z = b[j];
b[j] = b[j+1];
b[j+1] = z;
}
}
} for (i=0; i<n; i++)
printf("%s %d %d\n", b[i]->name, b[i]->age, b[i]->score);
} return 0;
}
/**************************************************************
Problem: 1061
User: liangrx06
Language: C
Result: Accepted
Time:330 ms
Memory:948 kb
****************************************************************/
九度OJ 1061:成绩排序 (排序)的更多相关文章
- 九度OJ 1023:EXCEL排序 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:14605 解决:3307 题目描述: Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. 对每个测试用例 ...
- 九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找
题目地址:http://ac.jobdu.com/problem.php?pid=1349 题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数 ...
- 九度OJ 1185:特殊排序 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:15588 解决:3592 题目描述: 输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序. 输入: 输入第一行包括1个整数N,1< ...
- 九度OJ 1066:字符串排序 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5632 解决:2299 题目描述: 输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的 ...
- 九度OJ 1135:字符串排序 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1559 解决:807 题目描述: 先输入你要输入的字符串的个数.然后换行输入该组字符串.每个字符串以回车结束,每个字符串少于一百个字符. 如 ...
- 九度OJ 1130:日志排序 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1265 解决:303 题目描述: 有一个网络日志,记录了网络中计算任务的执行情况,每个计算任务对应一条如下形式的日志记录: "hs ...
- 九度oj 题目1202:排序
题目1202:排序 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:28802 解决:9408 题目描述: 对输入的n个数进行排序并输出. 输入: 输入的第一行包括一个整数n(1<=n ...
- 九度oj 1349 数字在排序数组中出现的次数
原题链接:http://ac.jobdu.com/problem.php?pid=1349 二分.. #include<algorithm> #include<iostream> ...
- 九度oj 题目1392:排序生成最小的数
题目描述: 还记得陈博是个数字完美主义者么?^_^....这次,他又闹脾气了!我们知道计算机中常常要使用数组保存一组数字,但是今天他就要求把数组里的所有数字组成一个,并且这个数字是这些数字所能组成的所 ...
随机推荐
- HDU5877Weak Pair
Weak Pair Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 26 ...
- 基于WPF系统框架设计(1)-为什么要仿Office2010 Ribbon?
为什么系统框架设计使用Ribbon导航模式? 这得从Office软件的演变说起.微软为什么最后选择使用Ribbon,也许就是很多系统设计要使用Ribbon做功能导航的原因. 你是否还记得曾经使用过的M ...
- Android Spinner In Toolbar
As the title of the post suggest in this tutorial we will see how to have spinner widget inside the ...
- RecyclerView的滚动事件分析
列表的滚动一般分为两种: 手指按下 -> 手指拖拽列表移动 -> 手指停止拖拽 -> 抬起手指 手指按下 -> 手指快速拖拽后抬起手指 -> 列表继续滚动 -> 停 ...
- curl的用法
1.官网:https://curl.haxx.se/ 2.版本安全漏洞:https://curl.haxx.se/docs/security.html 3.github:https://github. ...
- HPU 3639--Hawk-and-Chicken【SCC缩点反向建图 && 求传递的最大值】
Hawk-and-Chicken Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- LCD设备驱动程序
LCD是Liquid Crystal Display的简称,也就是经常所说的液晶显示器 LCD能够支持彩色图像的显示和视频的播放,是一种非常重要的输出设备 Framebuffer 是Linux系统 ...
- 2016.7.14 去掉Mybatis Generator生成的一堆 example
参考资料: http://www.cnblogs.com/zerocold/p/4220955.html mybatis generator自动生成的代码里老是有一堆example,需要改的时候, ...
- Java设计模式博客全文件夹
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40031567 今天来对这23种设计模式做个总结.咱使用设计模式的目的是为了可重用代码.让代 ...
- GUID概念
GUID概念 GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) . GUID是 ...