赞
踩
输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
输入在一行中给出21世纪的某个截止年份。
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。
2048
- 2004
- 2008
- 2012
- 2016
- 2020
- 2024
- 2028
- 2032
- 2036
- 2040
- 2044
- 2048
2000
Invalid year!
思路:用for循或者while循环,来枚举2001年到输入的年份20xx年之间的所有年份,然后判该年份year是不是闰年,判断掉件是if((year%4 == 0 && year%100 != 0) || (year%400 ==0))。
优化:考虑到闰年一定是能整出4的年份,所以我们并不需要遍历2001年到20xx年之间的所有年份,只需要遍历从2004年开始,每次递增4的年份。判断闰年时也可以去掉year%4 == 0这个条件
注意:21世纪是从2001年开始到2100年结束。
代码
- #include <stdio.h>
- int main () {
- int endYear,year,flag = 0; //flag 为0表示没有找到闰年,为-1表示输入不合法,为1表示有找到闰年
- scanf("%d", &endYear); // 输入截止年份
- if (endYear < 2001 || endYear > 2100) flag = -1; // 如果截止年份不合法,标记flag=-1
- else {
- for (year = 2004; year <= endYear; year+=4) { // 遍历的恰好是4的整数被的年份
- if (year%100 != 0 || year%400 == 0) { // 这里判断条件可以省略 year%4 == 0
- printf("%d\n", year);
- flag = 1; // 找到闰年,将flag标记为1
- }
- }
- }
- if (flag == -1) printf("Invalid year!");
- else if (flag == 0) printf("None");
- return 0;
- }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。