题解:洛谷 P5737 【深基7.例3】闰年展示

【题目来源】

洛谷:P5737 【深基7.例3】闰年展示 - 洛谷

【题目描述】

输入 \(x,y\),输出 \([x,y]\) 区间中闰年个数,并在下一行输出所有闰年年份数字,使用空格隔开。

【输入】

输入两个正整数 \(x,y\),以空格隔开。

【输出】

第一行输出一个正整数,表示 \([x,y]\) 区间中闰年个数。

第二行输出若干个正整数,按照年份单调递增的顺序输出所有闰年年份数字。

【输入样例】

1989 2001

【输出样例】

3
1992 1996 2000

【算法标签】

《洛谷 P5737 闰年展示》 #模拟#

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
using namespace std;      // 使用标准命名空间

/**
 * 判断闰年函数
 * @param n 待判断的年份
 * @return 如果是闰年返回true,否则返回false
 */
bool fun(int n) 
{
    // 闰年判断条件:
    // 1. 能被4整除但不能被100整除
    // 2. 或者能被400整除
    if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0) 
    {
        return true;
    }
    return false;
}

int main()
{
    int x, y;           // 定义变量:起始年份x和结束年份y
    int sum = 0;        // 定义变量:闰年总数
  
    cin >> x >> y;       // 输入年份范围
  
    // 统计给定范围内的闰年数量
    for (int i = x; i <= y; i++) 
    {
        if (fun(i))      // 如果是闰年
        {
            sum++;       // 闰年计数加1
        }
    }
  
    // 输出闰年总数
    cout << sum << endl;
  
    // 输出所有闰年,用空格分隔
    for (int i = x; i <= y; i++) 
    {
        if (fun(i))      // 如果是闰年
        {
            cout << i << " ";  // 输出该年份
        }
    }
  
    return 0;            // 程序正常结束
}

【运行结果】

1989 2001 
3
1992 1996 2000
posted @ 2026-02-16 18:04  团爸讲算法  阅读(4)  评论(0)    收藏  举报