题目分析
这题本质上就是在比时间,但是这个时间怎么去表示呢?我一开始是想用结构体去表示个人信息,把年月日存成数字类型。但是后来发现,存成字符数组类型的话,因为时间的格式均为yyyy/mm/dd
,所以是可以比较的,再加上ASCII中的数字是有序的,所以字符串表示的时间序列在比较时也是满足先后顺序的,即时间点在前的时间字符串一定比时间点在后的时间字符串要小,这样只需要使用strcmp()
方法就可以比较两个时间点,而不需要把时间转成数字信息后再去按年月日分别比较,大大减小了做题复杂度。
同时这么做在过滤不合理的出生日期时(早于 1814/09/06 或晚于 2014/09/06)也可以直接判断。
算法设计
无
新知识点
- 预定义结构体数组中的字符数组成员会自动填充为’\0’
- 一定注意当结果等于0时,不光不需要输出人名信息,那个0之后的用来控制格式的空格也不要输出(此错误常见于在一行中输出多个信息的问题)