某人从1992年1月1日起开始“三天打鱼,两天晒网”,问:这个人在以后的某一天中是“打鱼”还是“晒网”;
就这个问题我认为最难的部分是计算他们之间相差的天数,该如何计算,用什么样的算法,尤为重要。
有三个方面:
1.年是否为闰年?
2.对应不同的月有不同的天数,该如何统计,还有比较特殊的二月,是29天,还是28天。该用什么记录这些数据。
3.最重要的部分,当然也是最难得部分,计算相差天数。
1.其判断是
year % 400 == 0 || year % 4 == 0 && year % 100 != 0
//判断条件是,输入的这一年能否被4整除且不能被100整除,或者
可以被400整除;
2.记录语句
(1)是一一举例
例如
if(month==1||month==3||month==5||.....)
return 31;
else
if().....
利用这可以一一举出,但是比较麻烦
(2)利用switch语句这样就结构简单。
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
return IN_year(year) ? 29 : 28;//判断是否为闰年
default:
return -1;
3.确实有点难。在这附上我找到的算法:
while (!Equal(Give, Get))//这里判断两个时间是否相同
{
if (Give.date != OUT_year(Give.year, Give.month))//
{
Give.date++;
}
else
{
//把每个月的天数都加起来,并且每次判断是否相同
if (Give.month != 12)
{
Give.month++;
Give.date = 1;
}
else
{
Give.date = Give.month = 1;
Give.year++;
}
}
x++;
}
在最后给大家介绍一下If语句的用法,借助一篇文章
http://blog.csdn.net/haiyan_cf/article/details/7325359