hxs111 发表于 2018-1-18 12:22:57

我用swich语句做的一个判断闰年的小程序

下面的year%100!=0 这句是网友提示我加上的,我想知道为什么 年份与100取模 需要是不等于0的值啊,不等于不就代表着有余数了吗,不能被100整除了才是闰年吗?

#include <stdio.h>
void main()
{
        int year, leap,n=1;
        printf("please input a year, eg.2000, I will help you ping or run\n");

        while (n<=5)

        {
                scanf("%d", &year);

                if (year%4==0 && year%100!=0 || year%400==0)   //year%4==0 && year%400==0
                {
                leap=1;                //leap变量没有重置,,,就是只要有一次是闰年,leap就永远是1,不管输什么都是闰年
                }
                else
                {
                leap=2;
                }

                switch (leap)//switch后面的表达式结果是一个boolean型,switch(boolean) 是不对的(year%4==0 && year%400==0)
                {
                case 1:printf("这是一个闰年!\n"); break;
                case 2:printf("这是一个平年!\n"); break;
                }
        n++;

        }
}

BngThea 发表于 2018-1-18 12:38:51

因为闰年是这样定义的:
1 能被4整除但是不能被100整除
2 能被400整除

爱晴海 发表于 2018-1-18 17:20:08

顺带说声while循环有点多余

hxs111 发表于 2018-1-19 09:19:55

爱晴海 发表于 2018-1-18 17:20
顺带说声while循环有点多余

是有些多余,我就想每次能多试几个,{:10_254:}

hxs111 发表于 2018-1-19 09:22:46

BngThea 发表于 2018-1-18 12:38
因为闰年是这样定义的:
1 能被4整除但是不能被100整除
2 能被400整除

谢谢亲
页: [1]
查看完整版本: 我用swich语句做的一个判断闰年的小程序