输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
输入格式:
输入在一行中给出21世纪的某个截止年份。
输出格式:
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。
输入样例1:
2048
输出样例1:
2004
2008
2012
2016
2020
2024
2028
2032
2036
2040
2044
2048
输入样例2:
2000
输出样例2:
Invalid year!
#include<stdio.h>
int main()
{
int i,n;
scanf("%d\n",&i);
if(i<2001||i>2100)
{
printf("Invalid year!");
}
else if(i<2004&&i>2000)//此处必须分成两组情况写出来,因为程序代码自上而下进行,且for
//的前提条件是没有的,则若将else if中的else去掉,后面的else也去掉
//则无论什么数都能执行for循环了,只不过是满足前面两个if的条件的数再多执行一次其相对应
//的语句而已。(第二个if中的除外)
//如此时再输入2101
//则会在第一行先输出"Invalid year!"然后接着运行for循环截止到2101年前的所有闰年。
{
printf("None");
}
else if(i>=2004&&i<=2100)
{
for(n=2004;n<=i;n++)
{
if(n%4==0&&n%100!=0)
{
printf("%d\n",n);
}
}
}
return 0;
}
其次,这一点则是自己的考虑不周全了
题目虽然说输入格式是给出21世纪的某个截止年份,即我们应该输入这个
但在输出格式中明明已经给出提示了:
若非21世纪的则输出"Invalid year!"且其情况很多,不只是能输入2000
还有(<2000,>2100的情况)
再就是经常要来细细品味这道题
这道题很精彩!