7-4 输出闰年

输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。

输入格式:
输入在一行中给出21世纪的某个截止年份。

输出格式:
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。

输入样例1:

2048

输出样例1:

2004
2008
2012
2016
2020
2024
2028
2032
2036
2040
2044
2048

输入样例2:

2000

输出样例2:

Invalid year!
#include<stdio.h>
int main()
{
    int i,n;
    scanf("%d\n",&i);
    if(i<2001||i>2100)
    {
        printf("Invalid year!");
    }
    else if(i<2004&&i>2000)//此处必须分成两组情况写出来,因为程序代码自上而下进行,且for
    //的前提条件是没有的,则若将else if中的else去掉,后面的else也去掉
    //则无论什么数都能执行for循环了,只不过是满足前面两个if的条件的数再多执行一次其相对应
    //的语句而已。(第二个if中的除外)
    //如此时再输入2101
    //则会在第一行先输出"Invalid year!"然后接着运行for循环截止到2101年前的所有闰年。
    {
        printf("None");
    }
    else if(i>=2004&&i<=2100)
    {
    for(n=2004;n<=i;n++)
        {
            if(n%4==0&&n%100!=0)
            {
                printf("%d\n",n);
            }
    }
      }
    return 0;
}

其次,这一点则是自己的考虑不周全了
题目虽然说输入格式是给出21世纪的某个截止年份,即我们应该输入这个
但在输出格式中明明已经给出提示了:
若非21世纪的则输出"Invalid year!"且其情况很多,不只是能输入2000
还有(<2000,>2100的情况)

再就是经常要来细细品味这道题
这道题很精彩!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值