输入 x,y(1582\le x < y \le 3000)x,y(1582≤x<y≤3000) ,输出 [x,y][x,y] 区间中闰年个数,并在下一行输出所有闰年年份数字,使用空格隔开。
输入输出样例
输入 #1
1989 2001
输出 #1
3 1992 1996 2000
题目分析
1.普通闰年:能被4整除但不能被100整除的年份为普通闰年。
2.世纪闰年:能被400整除的为世纪闰年。
3.因为要输出闰年的个数和闰年的具体年份,所以使用数组来解决这个问题最合适。
程序代码:(每行代码加注释是个好习惯,坚持)
#include<iostream>
using namespace std;
int s[1000];
int main(){
int a,b;
cin>>a>>b;//输入开始年份和结束年份
int n=0;
for(int i=a;i<=b;i++){
if((i%4==0&&i%100!=0)||i%400==0){//判断这年是不是普通闰年或者世纪闰年。
s[n++]=i;//是闰年或者世纪闰年记答案,次数加1
}
}
cout<<n<<endl;//先输出次数
for(int i=0;i<n;i++){
cout<<s[i]<<" ";//输出闰年的年份答案
}
cout<<endl;//换行
return 0;//结束
}
运行结果
题目总结:
1.用万能的数组下表进行计数,数组输出相应的年份。这个是很好的解决办法。
2.数组和for循环的熟练利用可以解决很多循环问题。
3.闰年的判断不要方法代码注意世纪闰年。((i%4==0&&i%100!=0)||i%400==0)