关于闰年问题的思考

如果某一年的年份能被4整除,但是不能被100整除,那么这一年就是闰年,此外能被400整除的年份也是闰年。


我对这个问题一直没有弄清楚,最近经过仔细考量,发现自己以前对这个问题存在两个思维误区:

1.能被4整除,不能被100整除是闰年。那么能被4整除,也能被100整除是不是闰年?

2.“能被400整除”与“能被4整除,也能被100整除”是什么关系?


首先解决第一个疑惑:

能被4整除也能被100整除:100,200,300,400……

能被400整除:400,800……

由此可见能被4整除也能被100整除可能是闰年,也可能不是闰年。

存在这个疑惑的时候,很容易写成#include<stdio.h>

int main(void)
{
        int year;

        printf("请输入一个年份:");
        scanf("%d",&year);
        if(year%4==0)
        {
                if(year%100!=0)
                {
                        printf("是闰年!\n");
                }
                else if(year%400==0)
                {
                        printf("是闰年!\n");
                }
                else
                {
                        printf("不是闰年!\n");
                }
        }             

       else if(year%400==0)
       {
                printf("是闰年!\n");
        }
        else
        {
                printf("不是闰年!\n");
        }

        return 0;
}


让后解决第二个疑问:

能被400整除的数必定能被4和100整除,但是能被4和100整除的数就不一定能被400整除了。意思就是说能被400整除的数是能被4和100整除的数的一种情况;#include<stdio.h>

int main(void)
{
        int year;

        printf("请输入一个年份:");
        scanf("%d",&year);
        if(year%4==0)
        {
                if(year%100!=0)
                {
                        printf("是闰年!\n");
                }
                else if(year%400==0)
                {
                        printf("是闰年!\n");
                }
                else
                {
                        printf("不是闰年!\n");
                }
        }

       else if(year%400==0)
       {
                printf("是闰年!\n");
        }
        else
        {
                printf("不是闰年!\n");
        }

        return 0;
}

                else if(year%400==0)
                {
                        printf("是闰年!\n");
                }


纠正这两个误区之后的代码应该是这样的:

#include<stdio.h>

int main(void)
{
        int year;

        printf("请输入一个年份:");
        scanf("%d",&year);
        if(year%4==0)
        {
                if(year%100!=0)
                {
                        printf("是闰年!\n");
                }
                else if(year%400==0)
                {
                        printf("是闰年!\n");
                }
                else
                {
                        printf("不是闰年!\n");
                }
        }
        else
        {
                printf("不是闰年!\n");
        }

        return 0;
}



这个问题,经过我反复思考之后,我认为就是:“能被4整除的年份里,不能被100或者能被400整除的年份就是闰年。”这个意思,但是按照题目所表述“如果某一年的年份能被4整除,但是不能被100整除,那么这一年就是闰年,此外能被400整除的年份也是闰年。”我真的觉得有歧义。但是为什么会导致这些错误理解,我也不清楚,不知道是题目中存在语病还是我自己思维问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值