练习3-5 输出闰年 (15 point(s))
输出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!
参考答案
注意:题干没有明确说明21实际的边界年份,这个一直都有好几种说法,无非前后移动一两天
#include<stdio.h>
int main()
{
int year,start=2000,count=0;
//2001年至2100年
scanf("%d",&year);
if(2001<=year&&2100>=year);else
{
puts("Invalid year!");
return 0;
}
// & 和 && 的区别在于:
//&& 第一个判断结果为true时不再进行第二个判断,而&无论如何两次判断都会执行
//闰年的判别条件是该年年份能被4整除但不能被100整除
while(start<=year)if(0==start%4 & 0!=start++%100)
{
printf("%d\n",start-1);
count++;
}
if(count);else puts("None");
}