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!
思路:
- 输入n个字符串(可以用二维数组来存储)
- 用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语言相关推荐
- PTA 基础编程题目集 7-27 冒泡法排序 C语言
PTA 基础编程题目集 7-27 冒泡法排序 C语言 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们.通过一遍扫描,则最后一 ...
- 论文浅尝 - EMNLP2020 | 通过词重排序跨语言解析
笔记整理 | 吴林娟,天津大学硕士 来源:EMNLP2020 链接:https://www.aclweb.org/anthology/2020.findings-emnlp.265.pdf 动机 依赖 ...
- C语言 数组排序 – 快速法排序 - C语言零基础入门教程
目录 一.简介 二.数组快速法排序原理 三.数组快速法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...
- C语言 数组排序 – 插入法排序 - C语言零基础入门教程
目录 一.简介 二.数组插入法排序原理 三.数组插入法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...
- C语言 数组排序 – 选择法排序 - C语言零基础入门教程
目录 一.简介 二.数组选择法排序原理 三.数组选择法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...
- 希尔排序(C语言简单实现)
希尔排序(C语言简单实现) 希尔排序是直接插入排序的升级版,直接插入排序每次增量是1,但希尔排序的增量increment比1大,也就是说直接插入排序是一个一个比较的,但是希尔排序是跳着来的,从而实现顺 ...
- 科研工具EndNote文献排序
我不知道大家怎么用EndNote来插入文献的,我用的时候,感觉文献排序很烦,要不就是按照作者姓名首字母,要么就按照年份,导致插入还得来回找,很麻烦.(也许我使用EndNote的方法本来就不对) 多少有 ...
- c语言实验题——字符串排序,C语言中实现“三个数由小到大排序”的多种方法浅析...
本文通过一个简单示例"三个数由小到大排序",将C语言中许多知识点融会贯通起来,这多种方法的实现可以将函数.宏.指针之间的区别和本质清晰的展示给读者,使本来很复杂难以理解的概念变得通 ...
- c语言比较四个数大小并由小到大排序,c语言任意输入5个数,并按从大到小顺序输出...
可以采用以下的代码进行计算: #include #include int main() { int a[5]; int i,j,k; for(i=0;i<=4;i++) { scanf(&quo ...
- golang 排序list_Go语言使用sort包对任意类型元素的集合进行排序的方法
本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法.分享给大家供大家参考.具体如下: 使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法 ...
最新文章
- FastJson常见问题
- 【SDK接入篇】【1】Unity的internal 与 gradle打包
- HDU - 6315 Naive Operations(线段树+思维)
- python多进程内存共享_python 归纳 (二十)_多进程数据共享和同步_共享内存Value Array...
- Axure 共享强制签出签入
- Python学习(九)IO 编程 —— 文件夹及文件操作
- linux get current thread count and system threads limit
- 改写画质、突破性能, Unity 全面升级!
- 巧用DBGrid控件的Sort属性实现“点击标题栏自动排序功能”。(改进版本)
- 力软快速开发平台源码7.0.6
- python笔记之ArcPy简介
- 离散数学思维导图 - 集合论,命题逻辑,谓词逻辑,二元关系,特殊关系,图论,树
- 将excel中的列转置成行
- 查看Python版本和位数
- word毕业论文格式排版修改
- FFMPEG使用摄像头录像并编码
- Emulex光纤卡lpfc配置文件的修改
- 【Android工具】更新手机流媒体播放器,手机DLNA播放器OPlayer
- 多传感器的联合标定(三)
- 阿里云天池携手产学研心血管专家,共话心血管AI发展
热门文章
- 原生android 操作系统,为什么氢OS被称为最接近原生安卓的操作系统?
- IE、FF、Safari、OP不同浏览器兼容报告
- 第三种最小生成树算法 Borůvka算法
- P1195 口袋的天空
- 惯导标定国内外研究现状小结(删减版)
- 苹果充电慢是什么原因_成都苹果维修点告诉你为什么iPhone手机不能在关机状态下充电?...
- 【调剂】2022年燕山大学电气工程学院 程淑红教授“计算机视觉与人工智能”团队调剂招生信息...
- 【转载】mysql view prevents operation处理
- 批处理学习(一)——MS-DOS命令
- Crust Network 与京湘豫等地区块链名企、投资人考察广西区块链科创园