写在前面:

问卷调查课日常摸鱼,,

这道题感觉思路很简单,就是具体实现时出现了意料之外的问题。
比如用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 <stdlib.h>
#include <algorithm>

比较大的数组要定义在main函数之外:

char s[205][205];

cmp函数(qsort要用到):

int cmp(const void * a, const void *  b)
{char s1[205], s2[205];int i;strcpy(s1, (char*)(a));strcpy(s2, (char*)(b));for(i=0;s1[i]!='\0'; i++){if(s1[i] >= 'A' && s1[i] <= 'Z')s1[i] = s1[i] - 'A' + 'a';}for(i=0;s2[i]!='\0'; i++){if(s2[i] >= 'A' && s2[i] <= 'Z')s2[i] = s2[i] - 'A' + 'a';}return strcmp(s1,s2);
}

main函数:

int main()
{int cas;scanf("%d" ,&cas);for(int i=0; i<cas; i++){int n;scanf("%d", &n);getchar();          //不可缺少for(int j=0; j<n; j++)gets(s[j]);printf("case #%d:\n", i);qsort(s, n, sizeof(char[205]), cmp);for(int j=0; j<n ;j++)puts(s[j]);}return 0;
}

题后感:

挺开心的,又学会了一点东西。

小长假要开始了,不过明天可不能睡懒觉,,(因为抢不到票所以只能坐大清早的高铁【手动微笑)
By the way, 明天就回家了,生活真是太美好了啊~

——2019.4.30 22点20分 于寝室

EOJ 2990 文献排序 C语言相关推荐

  1. PTA 基础编程题目集 7-27 冒泡法排序 C语言

    PTA 基础编程题目集 7-27 冒泡法排序 C语言 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们.通过一遍扫描,则最后一 ...

  2. 论文浅尝 - EMNLP2020 | 通过词重排序跨语言解析

    笔记整理 | 吴林娟,天津大学硕士 来源:EMNLP2020 链接:https://www.aclweb.org/anthology/2020.findings-emnlp.265.pdf 动机 依赖 ...

  3. C语言 数组排序 – 快速法排序 - C语言零基础入门教程

    目录 一.简介 二.数组快速法排序原理 三.数组快速法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...

  4. C语言 数组排序 – 插入法排序 - C语言零基础入门教程

    目录 一.简介 二.数组插入法排序原理 三.数组插入法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...

  5. C语言 数组排序 – 选择法排序 - C语言零基础入门教程

    目录 一.简介 二.数组选择法排序原理 三.数组选择法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...

  6. 希尔排序(C语言简单实现)

    希尔排序(C语言简单实现) 希尔排序是直接插入排序的升级版,直接插入排序每次增量是1,但希尔排序的增量increment比1大,也就是说直接插入排序是一个一个比较的,但是希尔排序是跳着来的,从而实现顺 ...

  7. 科研工具EndNote文献排序

    我不知道大家怎么用EndNote来插入文献的,我用的时候,感觉文献排序很烦,要不就是按照作者姓名首字母,要么就按照年份,导致插入还得来回找,很麻烦.(也许我使用EndNote的方法本来就不对) 多少有 ...

  8. c语言实验题——字符串排序,C语言中实现“三个数由小到大排序”的多种方法浅析...

    本文通过一个简单示例"三个数由小到大排序",将C语言中许多知识点融会贯通起来,这多种方法的实现可以将函数.宏.指针之间的区别和本质清晰的展示给读者,使本来很复杂难以理解的概念变得通 ...

  9. c语言比较四个数大小并由小到大排序,c语言任意输入5个数,并按从大到小顺序输出...

    可以采用以下的代码进行计算: #include #include int main() { int a[5]; int i,j,k; for(i=0;i<=4;i++) { scanf(&quo ...

  10. golang 排序list_Go语言使用sort包对任意类型元素的集合进行排序的方法

    本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法.分享给大家供大家参考.具体如下: 使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法 ...

最新文章

  1. FastJson常见问题
  2. 【SDK接入篇】【1】Unity的internal 与 gradle打包
  3. HDU - 6315 Naive Operations(线段树+思维)
  4. python多进程内存共享_python 归纳 (二十)_多进程数据共享和同步_共享内存Value Array...
  5. Axure 共享强制签出签入
  6. Python学习(九)IO 编程 —— 文件夹及文件操作
  7. linux get current thread count and system threads limit
  8. 改写画质、突破性能, Unity 全面升级!
  9. 巧用DBGrid控件的Sort属性实现“点击标题栏自动排序功能”。(改进版本)
  10. 力软快速开发平台源码7.0.6
  11. python笔记之ArcPy简介
  12. 离散数学思维导图 - 集合论,命题逻辑,谓词逻辑,二元关系,特殊关系,图论,树
  13. 将excel中的列转置成行
  14. 查看Python版本和位数
  15. word毕业论文格式排版修改
  16. FFMPEG使用摄像头录像并编码
  17. Emulex光纤卡lpfc配置文件的修改
  18. 【Android工具】更新手机流媒体播放器,手机DLNA播放器OPlayer
  19. 多传感器的联合标定(三)
  20. 阿里云天池携手产学研心血管专家,共话心血管AI发展

热门文章

  1. 原生android 操作系统,为什么氢OS被称为最接近原生安卓的操作系统?
  2. IE、FF、Safari、OP不同浏览器兼容报告
  3. 第三种最小生成树算法 Borůvka算法
  4. P1195 口袋的天空
  5. 惯导标定国内外研究现状小结(删减版)
  6. 苹果充电慢是什么原因_成都苹果维修点告诉你为什么iPhone手机不能在关机状态下充电?...
  7. 【调剂】2022年燕山大学电气工程学院 程淑红教授“计算机视觉与人工智能”团队调剂招生信息...
  8. 【转载】mysql view prevents operation处理
  9. 批处理学习(一)——MS-DOS命令
  10. Crust Network 与京湘豫等地区块链名企、投资人考察广西区块链科创园