这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战
编写程序计算某年某月某日是该年中的第几天?
例如输入fool girl 的出生日期1999-5-27
输出147
这种程序在编写实现的时候很简单,我们只需要判别出我们需要特别注意的地方即可。比如闰年之类的。
注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。并且闰年当中的2月有29天。
第1种 switch 语句代码实现
第一种方法是我们可以利用 switch ... case...
的特性,将都是 31 天的月份归到一类,都是 30 天的归位一类,特殊的归为一类,最后再判断出是否是闰年,天数加1即可。
1 | c复制代码 int year,month,day,sum=0,i; |
第2种(将之前的月天数直接给出)
第二种方法就是将第一种归类的月份分开,每个月每个月依次累加即可,最后再判断出是否是闰年,天数加1即可。
1 | c复制代码 int year, month, day,sum=0; |
第3种最简方法(纯属个人认为)
个人感觉第3种方法最简单,将所有天数存成一个数组,数组的下标就是当前月,只需要依次循环遍历数组即可。最后再判断出是否是闰年,天数加1即可。
1 | c复制代码 int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},year,month,day,sum=0,i; |
第3种运算实例
第3种扩展方法(总天数倒着减)
最后一种方法跟第三种方法相差不大,无聊的时候写的,还是将所有天数存成一个数组,数组的下标就是当前月,我们先判断是否是闰年,得出当年的总天数,然后只需要依次循环遍历数组递减即可。
1 | c复制代码int year,month,day,sum=365,i,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; |
本文转载自: 掘金