为了账号安全,请及时绑定邮箱和手机立即绑定

为什么case 3=59?而不是61?

理论上这个时候是不知道case3是59还是61的?

为什么这里直接赋值59?

正在回答

2 回答

正确答案:

#include <stdio.h>

int main() 

    /* 定义需要计算的日期 */

    int year = 2008;

    int month = 10;

    int day = 8;

    int sum = 0;

    int a = 30;

    int b = month % 2;

    int c, m, n, d;

    

    if(month>1 && month<9)

    {

        switch(b)

    {   case 0:

        c = month / 2;

        break;

        case 1:

        c = month / 2 + 1;

        break;

    }

    n = year % 4;

    switch(n)

    {   case 0:

        m = 29;

        break;

        default:

        m = 28;

        break;

    }

    sum = (month - 2) * a + c + m + day;

    }

    else if(month>=9 && month<12)

    {

        switch(b)

    {   case 0:

        c = month / 2;

        d = 1;

        break;

        case 1:

        c = month / 2 + 1;

        d = 0 ;

        break;

    }

    n = year % 4;

    switch(n)

    {   case 0:

        m = 29;

        break;

        default:

        m = 28;

        break;

    }

    sum = (8 - 2) * a + c + m + day

     + (month - 8) * a + d;

    }

    printf("%d年%d月%d日是该年的第%d天", year, month, day, sum);

    

    return 0;

}

0 回复 有任何疑惑可以回复我~

这个考虑的是非闰年的情况,闰年的逻辑在后面的if语句修正(sum++),所以可以直接赋值59

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么case 3=59?而不是61?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信