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整除。
2. 在这段代码中,使用了容器(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()
。在循环体中,使用解引用运算符*
来获取迭代器指向的元素,并输出它们。