洛谷C++简单题小练习day14—闰年推算小程序

day14--闰年推算小程序--2.18

习题概述

题目描述

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

输入格式

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

输出格式

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

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

代码部分

复制代码
#include<bits/stdc++.h>
using namespace std;
bool isLeapYear(int year)//判断是否为闰年函数 
{
    if (year % 4 != 0) {
        return false;//不能被4整除 不是 
    }
    else if (year % 100 != 0) {
        return true;//可被4整除但不能被100整除 是 
    }
    else if (year % 400 != 0) {
        return false;//可被100整除但不能被400整除 不是 
    }
    else {
        return true;
    }
}

int main() {
    int x, y;
    cin >> x >> y;

    vector<int> leapYears;//创建一个存储闰年的向量
    int count = 0;//计数器

    for (int year = x; year <= y; year++)//循环遍历输入范围内的年份
	{
        if (isLeapYear(year)) 
		{
            count++;
        //是闰年增加计数器count并将该年份添加到leapYears向量中。
            leapYears.push_back(year);
        }
    }
    cout << count <<endl;//输出闰年总数量 
    //遍历leapYears向量,输出所有的闰年年份 
    for (int i = 0; i < leapYears.size(); i++) 
	{
        cout << leapYears[i] << " ";
    }
    cout <<endl;
    return 0;
}

心得体会

  1. 闰年是指具有366天的年份,相对于平年的365天来说多出了一天。闰年的判断规则如下:

1)如果年份能够被4整除,但不能被100整除,则是闰年。

2)如果年份能够同时被4和100整除,但不能被400整除,则不是闰年。

3)如果年份能够同时被4、100和400整除,则是闰年。

以下是一些示例:

·2000年是闰年,因为它可以被4、100和400整除。

·1900年不是闰年,因为它可以被4和100整除,但不能被400整除。

·2024年是闰年,因为它可以被4整除,但不能被100整除。

  1. 在这段代码中,使用了容器(vector)来存储闰年。使用容器的好处是可以动态地存储和管理数据,而无需提前知道要存储多少个元素。

在这段代码中,使用了一个名为leapYears的向量来存储闰年。每当遇到一个闰年时,将该年份添加到向量中。这样,最后就可以通过遍历向量来输出所有的闰年。

3.对于这段代码中使用的向量容器,可以使用下标运算符[]来访问并输出其中的元素。例如,要输出向量leapYears中的第i个元素,可以使用以下语句:

cout << leapYears[i];

这将输出向量中的第i个元素。需要注意的是,向量的下标从0开始,因此第一个元素的下标为0,第二个元素的下标为1,以此类推。也可以使用迭代器来遍历容器中的所有元素,这是使用容器时更常见的做法。例如,可以使用以下代码输出向量中的所有元素:

复制代码
for (vector<int>::iterator it = leapYears.begin(); it != leapYears.end(); ++it)
 { cout << *it << " "; }

这个循环使用迭代器it来遍历向量中的所有元素。it首先被初始化为向量的起始位置leapYears.begin(),然后在每次迭代中递增,直到it等于向量的结束位置leapYears.end()。在循环体中,使用解引用运算符*来获取迭代器指向的元素,并输出它们。

相关推荐
nianniannnn3 小时前
c++复习自存--标准模板库STL
开发语言·c++·windows
民乐团扒谱机3 小时前
【微实验】从迷雾中看清世界:卡尔曼滤波的数学诗意与MATLAB实践
人工智能·算法·matlab·卡尔曼滤波·kalman
努力努力再努力wz3 小时前
【高性能网络库与HTTP Server系列】:基于主从 Reactor 模型实现高性能 C++ 网络库与 HTTP Server
开发语言·网络·数据结构·数据库·c++·网络协议·http
什巳3 小时前
JAVA练习275-乘积最大子数组
java·开发语言·数据结构·算法
@踏雪寻梅3 小时前
27. 移除元素
算法
lang201509283 小时前
Apache POI Word(docx) 实战教程:从入门到精通表格合并、图片插入与文档合并
java·开发语言·word
小牛不牛的程序员4 小时前
利用Claude Code构建自动化需求挖掘工具:从原理到实践
java·算法·自动化
Robot_Nav4 小时前
C++ 面试常问问题汇总:基础语法、面向对象、STL、多线程与设计模式
c++·设计模式·面试
Mr.HeBoYan4 小时前
DPDK为什么越来越少使用rte_ring?——从Lock-Free到Run-to-Completion,重新理解现代DPDK架构演进(上)
linux·网络·算法·性能优化·架构·dpdk
在书中成长4 小时前
HarmonyOS 小游戏《对战五子棋》开发第14篇 - 困难AI实现:Minimax算法原理详解
人工智能·算法·harmonyos