时间限制: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码要小)。

来源:
2000年清华大学计算机研究生机试真题

思路:

用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:成绩排序 (排序)的更多相关文章

  1. 九度OJ 1023:EXCEL排序 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:14605 解决:3307 题目描述:     Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能.     对每个测试用例 ...

  2. 九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找

    题目地址:http://ac.jobdu.com/problem.php?pid=1349 题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数 ...

  3. 九度OJ 1185:特殊排序 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:15588 解决:3592 题目描述: 输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序. 输入: 输入第一行包括1个整数N,1< ...

  4. 九度OJ 1066:字符串排序 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5632 解决:2299 题目描述: 输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的 ...

  5. 九度OJ 1135:字符串排序 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1559 解决:807 题目描述: 先输入你要输入的字符串的个数.然后换行输入该组字符串.每个字符串以回车结束,每个字符串少于一百个字符. 如 ...

  6. 九度OJ 1130:日志排序 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1265 解决:303 题目描述: 有一个网络日志,记录了网络中计算任务的执行情况,每个计算任务对应一条如下形式的日志记录: "hs ...

  7. 九度oj 题目1202:排序

    题目1202:排序 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:28802 解决:9408 题目描述: 对输入的n个数进行排序并输出. 输入: 输入的第一行包括一个整数n(1<=n ...

  8. 九度oj 1349 数字在排序数组中出现的次数

    原题链接:http://ac.jobdu.com/problem.php?pid=1349 二分.. #include<algorithm> #include<iostream> ...

  9. 九度oj 题目1392:排序生成最小的数

    题目描述: 还记得陈博是个数字完美主义者么?^_^....这次,他又闹脾气了!我们知道计算机中常常要使用数组保存一组数字,但是今天他就要求把数组里的所有数字组成一个,并且这个数字是这些数字所能组成的所 ...

随机推荐

  1. const的限定

    const对象一旦创建后,其值就不可以改变,所以const对象必须初始化.与非const的类型比较,主要区别在于const类型对象执行但是不改变其操作内容. 在默认状态下,const只在文件内有效.在 ...

  2. mysql root密码忘记最快方法

    在my.cnf [mysqld]栏添加 skip-grant-tables 然后重启/etc/init.d/mysqld restart mysql ##select password('新密码') ...

  3. "贪心法"

    有没有想过 “==” 和“= =” 的区别 , 万一编译器曲解了你的意思,那不是爽歪歪! C语言编译器会把前面的符号当做一个整体,后面的不再. 当我们遇到指针相除时: y=x/*p 编译器会怎样? 和 ...

  4. props default 数组(Array)/对象(Object)的默认值应当由一个工厂函数返回

    1.场景: Object: <!-- 步骤 --> <template> <div> <div class="m-cell"> &l ...

  5. DeepinXP Lite 6.2 精简版220M 安装IIS

    本作品由Man_华创作,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.基于http://www.cnblogs.com/manhua/上的作品创作. 用虚拟机装了DEEP ...

  6. C#按指定长度分割字符串

    C#按指定长度分割字符串   这几天学习分析声音的波形数据,接收到的是十六进制的数据,需要将数据转换成十进制再绘图,这个过程涉及到字符串的分割,正好可以促进自己对C#相关知识的学习.说到分割字符串,我 ...

  7. 缷载vs2015后项目不能加载问题

    当加载项目时出现MSBuildToolsPath is not specified for the ToolsVersion "14.0" defined at "HKE ...

  8. python for android : BeautifulSoup 有 bug

    BeautifulSoup 善于网页数据分析 .可是 python for android : BeautifulSoup 有 bug , text = h4.a.text 仅仅能取得 None,因此 ...

  9. session 的工作原理以及使用细节和url编码

    /**********************************************模拟页面************************************************* ...

  10. jdbc 链接池的优化

    package cn.itcast.jdbc.datasourse; import java.sql.Connection;import java.sql.DriverManager;import j ...