打鱼晒网

某人从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



猜你喜欢

转载自blog.csdn.net/ab1605014317/article/details/78347770