文章

【GESP】C++一级练习luogu-B3846,闰年求和

GESP一级知识点for循环和if分支判断语句的练习,个人认为接近一级真题难度的题,对于闰年的判断定义变量来求和对于初学者是个小小的难点。

luogu-B3846

题目要求

描述

小明刚刚学习了如何判断平年和闰年,他想知道两个年份之间(不包含起始年份和终止年份)的所有闰年年份具体数字之和。你能帮帮他吗?

输入

输入一行,包含两个整数,分别表示起始年份和终止年份。约定年份在1 到 2022之间。

输出

输出一行,包含一个整数,表示闰年年份具体数字之和。

输入样例

2018 2022

输出样例

2020


题目分析

  • 读入两个整型变量,分别表示起始年份和终止年份
  • 使用for循环遍历这两个年份之间的所有年份(不包含起始和终止年份)
  • 对于每一年,判断是否为闰年:
    • 闰年的条件:能被4整除但不能被100整除,或者能被400整除
  • 如果是闰年,将该年份的各个数字相加,累加到总和中
  • 最后输出总和

这道题目涉及了以下知识点:

  • 输入输出操作
  • for循环的使用
  • if条件判断
  • 闰年的判断条件
  • 数学运算(求和、取模)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdio>
using namespace std;

int main() {
    int a, b;
    // 读入起始年份和终止年份
    scanf("%d%d", &a, &b);  
    // 初始化闰年年份数字之和
    int ans = 0;  
    // 遍历起始年份和终止年份之间的所有年份(不含头尾)
    for (a + 1; a < b; a++) {
        // 判断是否为闰年
        if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) {
            // 如果是闰年,将年份加到总和中
            ans += a;  
        }
    }
     // 输出闰年年份数字之和
    printf("%d", ans); 
    return 0;
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

本文由作者按照 CC BY 4.0 进行授权