C语言趣味编程
已知今天日期,输出三天后的日期(二)
「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。
编程很无趣,有趣的是我。
上期讲到第二种情况,跨月份这种情况怎么解决。
首先,解决跨月份问题呢,首先要考虑到下一月份的几号,其次比较难处理的就是不同的月份,具有不同的天数,所以此处感觉思路就会很凌乱,一种无从下手的感觉。(菜鸡的我觉得无从下手,大佬请忽视)
到下一月的几号也比较好处理,其实就是(3-(该月份天数-今天号数)),此处新增加一个变量,就是该月份天数,他不仅仅受月份影响,同时也受年份(闰平年)影响,天数是变量,月份是变量,年份也是变量,怎么处理一个又一个冒出来的变量,其实本质上,我觉得是出现了一个又一个的映射,也就是一个又一个的函数,那我们遇到这种情况的时候那就把变量变成函数写出来。
现在又有一个问题了,这个函数该从天数-月份-年份开始编,还是年份-月份-天数开始编,还是随便从哪都可以?一般来讲都应该从最开始的变量开始,就像蝴蝶效应一样,从蝴蝶煽动翅膀开始。
下面开始年份函数:
年份的函数咋编,我们心中应该时时刻刻都要有一个简单的公式,就是
y=f(x)
很简单的一个公式,理解他,就是要理解函数,要理解映射,从初中开始学的函数,真的是非常有用,我个人这是一种逻辑关联以及想象的能力,非常重要。
那么该怎么从这个简单的公式入手来编写程序呢,首先是得明白变量是啥,因变量是啥。此处变量是年月,因变量是2月份的天数,于是,我们便可以编写一个关于得到2月份天数的函数,这里面还涉及到f(),即函数关系的理解,这块我也说不清,我现在唯一清晰的就是变量和因变量一定要找出来。
我们对2月份的天数进行编程:
/* 因变量是天数,所以此处我们设置函数返回值为int,函数返回值的理解也非常重要,同时变量是年份,也是整数,所以输入参数类型也为整数,但是,因为我们前面已经定义了日期这一结构变量,所以我们或许直接拿date这个结构变量来使用似乎更好一点,毕竟不用重新声明年份,所以此处用struct date*/
int daysOfFeb (struct date D){
int days;
if ((D.year % 4 == 0 && D.year != 0) || D.year % 4 == 0)
days = 29;
else days = 28;
return days;
}
见下期。