EOJ 2990 文献排序 C语言

写在前面:

问卷调查课日常摸鱼,,

这道题感觉思路很简单,就是具体实现时出现了意料之外的问题。
比如用scanf或cin输入若干个个字符串时,如果输入了空格,接下来的内容都是下一个字符串的了。

所以本以为这道题可以水过,结果还是花了较长时间w,,

题目:

2990. 文献排序

题面
单点时限: 2.0 sec
内存限制: 256 MB
现在你的导师给你了一个待排序的参考文献列表,要你排好序给他。
文献列表中每一条文献记录只占一行。排序的规则和string类型字符串的比较规则一致(在排序时如果该字符串中包含大写字母,则当作小写字母处理,保证没有相同大小的字符串,但是输出结果不能改变任一字符串),按升序排列。

输入格式
第 1 行:一个整数 T (1≤T≤10) 为问题数。

对于每组测试数据:每组第一行包括一个整数n,(1≤n≤200),接下来有n行,每行包括一行文献记录,文献记录的长度s (1≤s≤200)。

输出格式
对每组输入,输出一行问题的编号(0开始编号,格式:case #0: 等)然后输出排好序的文献记录。

样例

input

3
3
abc hello!
Abc hellz!
bbc hello!
2
Acc hello!
Abc hellz!
3
Abc Hi!
abc Hallo!
aAc hello!

output

case #0:
abc hello!
Abc hellz!
bbc hello!
case #1:
Abc hellz!
Acc hello!
case #2:
aAc hello!
abc Hallo!
Abc Hi!

思路:

  1. 输入n个字符串(可以用二维数组来存储)
  2. 用qsort为这些字符串排序(此题注意cmp函数)
  • 使用方法:参考博客:字符串数组qsort排序
  • 此题cmp逻辑:
    因为比较时不区分大小写,但输出时是按原有大小写输出,
    所以,在cmp函数中,比较的不是原字符串,而是两个临时字符串,内容是“小写化”了的原串

其他:

通过这道题,了解到了gets和scanf、cin的一个挺重要的区别——

  • gets:遇到回车停止读入。
  • scanf和cin:遇到回车、空格、tab停止读入。

所以如果要输入的字符串中包含空格或tab,这三者中只能选择gets。

参考博客:scanf、gets、getchar、cin、cin.get、cin.getline、getline总结

代码:

头文件:

#include <stdio.h>
#include <string.h>
#include 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值