PTA 编程题(C语言)-- 输出闰年

输出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!

思路:用for循或者while循环,来枚举2001年到输入的年份20xx年之间的所有年份,然后判该年份year是不是闰年,判断掉件是if((year%4 == 0 && year%100 != 0) || (year%400 ==0))。

优化:考虑到闰年一定是能整出4的年份,所以我们并不需要遍历2001年到20xx年之间的所有年份,只需要遍历从2004年开始,每次递增4的年份。判断闰年时也可以去掉year%4 == 0这个条件

注意:21世纪是从2001年开始到2100年结束。

代码

#include <stdio.h>
int main () {
    int endYear,year,flag = 0; //flag 为0表示没有找到闰年,为-1表示输入不合法,为1表示有找到闰年
    scanf("%d", &endYear);  // 输入截止年份
    if (endYear < 2001 || endYear > 2100) flag = -1;  // 如果截止年份不合法,标记flag=-1
    else {
        for (year = 2004; year <= endYear; year+=4) {  // 遍历的恰好是4的整数被的年份
            if (year%100 != 0 || year%400 == 0) {  // 这里判断条件可以省略 year%4 == 0
                printf("%d\n", year);
                flag = 1; // 找到闰年,将flag标记为1
            }
        }
    }
    if (flag == -1) printf("Invalid year!");
    else if (flag == 0) printf("None");
    return 0;
}

更多PTA题目的的参考代码,可以在wx小程序里搜“PTA刷题助手”,或扫下面的二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值