思路:

这一题的思路很清晰啊,既然需要对每一个成员输入相关信息,且信息都是姓名,生日的年、月、日。那么定义一个结构体是在所难免的。同时因为要输入 1<n<100 个成员及相关信息,所以肯定不能一个一个实例化,就需要定义一个结构体数组 birthday[101]。接下来就是简单的排序和输出了,对结构体数组里面的成员按生日由早到晚进行排序,最后按序输出成员姓名即可。

下面是代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 20typedef struct Person
//定义结构体
{char name[N];int year;int month;int day;
}Person;int main()
{Person temp;//用来排序时交换顺序的中间量int num;Person birthday[101];//结构体数组scanf("%d",&num);for(int i=0;i<num;i++){scanf("%s",birthday[i].name );scanf("%d",&birthday[i].year );scanf("%d",&birthday[i].month );scanf("%d",&birthday[i].day );}//输入完成,接下来开始排序if(num>1){for(int m=0;m<num-1;m++){for(int n=m+1;n<num;n++){if(birthday[m].year >birthday[n].year ||(birthday[m].year ==birthday[n].year && birthday[m].month >birthday[n].month)||(birthday[m].year ==birthday[n].year&& birthday[m].month ==birthday[n].month&& birthday[m].day >=birthday[n].day)){temp=birthday[m];birthday[m]=birthday[n];birthday[n]=temp;}}}}//排序完成,直接输出for(int i=0;i<num;i++){printf("%s\n",birthday[i].name);}
}

很离谱啊:

代码展示完了,接下来讲一下自己的疑惑。对于排序算法,我一开始并不是上面所示的代码,而是和上篇车厢重组一样的代码,很奇怪的是,输出时姓名会出现乱码,这是我不能理解的。为什么呢?一个是先排最大的,一个是先排最小的,为啥前者会乱码而后者不会呢???当然,不可否认的是,这个算法比昨天的算法复杂度低,所以下次排序优先选择这种排序。另外,在排序的判断条件里,刚开始我并没有加 birthday[m].day==birthday[n].day 这种情况,因为我认为,它两相等完全可以无视啊,都一样嘛,还排什么?可是最后提交有一个测试点没通过,我下载了测试信息之后看了一下,觉得应该是这个问题,就把这个条件加上了,果然通过了,很神奇,下次注意一下。

洛谷 P1104生日 C语言相关推荐

  1. Python 洛谷 p1104 生日

    题目描述 cjf 君想调查学校 OI 组每个同学的生日,并按照年龄从大到小的顺序排序.但 cjf 君最近作业很多,没有时间,所以请你帮她排序. 输入格式 输入共有 2 行, 第 1 行为 OI 组总人 ...

  2. 洛谷刷题C语言:潇湘の雨、分糖果、Addition、Ljeto、TRI

    记录洛谷刷题C语言QAQ 「PMOI-0」潇湘の雨 题目背景 (原 LZOI-1,改名已经 PMOI 成员同意) lhm-01 题目描述 言琢დ 在一个 2n×2n2n \times 2n2n×2n ...

  3. 洛谷刷题C语言:Bold、饱食、公平の意、DOM、

    记录洛谷刷题C语言qaq [COCI2020-2021#6] Bold 题目描述 Paula 给 Daniel 写了一封信,她需要加粗文本的字体,以便视力恶化的 Daniel 阅读. 信可以用 . 和 ...

  4. 洛谷刷题C语言:陶瓷项链、Cow Gymnastics B、Where Am I? B、Hello, 2020!、SIR 模型

    记录洛谷刷题C语言 一.[NOI2000] 瓷片项链 题目描述 原始部落用一种稀有的泥土烧制直径相同的圆瓷片并串成项链,串的时候沿瓷片的直径方向顺次连接,瓷片之间没有空隙也不重叠,一条项链至少由一个瓷 ...

  5. 洛谷刷题C语言:切蛋糕、概率、Bridž、NOTE、DOMINO

    记录洛谷刷题C语言qaq [NOI Online 2021 入门组] 切蛋糕 题目描述 Alice.Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕,他们打算分享这个蛋糕. 三个人的需求量分别为 ...

  6. 洛谷刷题C语言:Physics Problem、PARKING、Trol、信息学竞赛、POT

    记录洛谷刷题C语言 「dWoi R1」Physics Problem 题目背景 面对白板上的物理题,王马陷入了沉思 -- 题目描述 有 nnn 个状态,编号为 111 到 nnn.这 nnn 个状态之 ...

  7. 洛谷刷题C语言:Fergusonball Ratings、Don‘t Mozheng. /oh、gcd.、幻想乡扑克游戏、PMTD

    记录洛谷刷题C语言qaq [CCC2022 J2] Fergusonball Ratings 题目描述 现在有一个球队需要你评价. 球队中的第 i i i 个人进了 a i a_i ai​ 个球,犯规 ...

  8. 洛谷刷题C语言:远古档案馆(Ancient Archive)、VOLIM、SAHOVNICA、Tuna、KRIŽALJKA

    记录洛谷刷题C语言qaq,都是些不优雅的代码 远古档案馆(Ancient Archive) 题目背景 为了揭开月光能量背后的秘密,你来到了地下的远古档案馆. 远古一族的秘密与遗忘的知识悉数贮藏于这片被 ...

  9. 洛谷刷题C语言:闰年判断、Apples、洛谷团队系统、肥胖问题、三位数排序

    记录洛谷刷题QAQ 一.[深基3.例3]闰年判断 题目描述 输入一个年份,判断这一年是否是闰年,如果是输出 111,否则输出 000. 输入格式 输入一个正整数 nnn,表示年份. 输出格式 输出一行 ...

最新文章

  1. 漫谈递归:从斐波那契开始了解尾递归
  2. java中高级大公司多线程面试题
  3. mysql find()方法_Mysql find_in_set()函数使用方法
  4. 最详细的创建虚拟机_minmal版本
  5. 假期周进度总计(四)
  6. 【leetcode】Median of Two Sorted Arrays
  7. Vue系列vue-router的动态路由使用(二)
  8. 双拼输入法键位图_你知道双拼输入法吗?
  9. 西部数据app可导致Windows 和 macOS 提权
  10. EasyUI-在iframe里获取现阶段选中的tab的标题
  11. 预测大盘最准确的指标_预测大盘最准确的指标-图讯阅读基地
  12. CVPR2019论文列表(中英对照)
  13. Jquery中fadein() fadeout()方法的使用
  14. iPhone屏幕尺寸(包含7p)
  15. Java_定义一个圆类,提供输出面积和周长的方法,定义一个测试类使用
  16. 为每天节省两小时-华芸AS4004T万兆NAS搭建测试
  17. 碰到ConvergenceWarning的情况
  18. wps无法打印_WPS+云办公如何进行文档加密
  19. python-qbittorrent库下载电影学习记录(含基本使用和常用函数)
  20. 英飞凌 AURIX TC3XX 系列单片机的链接文件

热门文章

  1. 2007-2021年36家商业银行绿色信贷相关数据
  2. (Tekla Structures二次开发)在图纸中创建旋转的3D视图
  3. ensp 静态路由与默认路由
  4. 第三代短波通信网路由协议研究
  5. 宏电 H8922 Telnet后门漏洞(CVE-2021-28149)
  6. 高级人工智能课程笔记
  7. 【小记】为什么jvm的新生代要分为一个Eden和两个Survivor
  8. 利用LinearGradient Shader和Matrix来实现动态文字闪动效果
  9. 小端模式和大端模式的区别与C++代码检测
  10. 教育部原副部长张天保谈教育改革,强调教育与科技深度融合