当前位置:   article > 正文

PTA 编程题(C语言)-- 输出闰年_输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能

输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能

输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。

输入格式:

输入在一行中给出21世纪的某个截止年份。

输出格式:

逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。

输入样例1:

2048

输出样例1:

  1. 2004
  2. 2008
  3. 2012
  4. 2016
  5. 2020
  6. 2024
  7. 2028
  8. 2032
  9. 2036
  10. 2040
  11. 2044
  12. 2048

输入样例2:

2000

输出样例2:

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年结束。

代码

  1. #include <stdio.h>
  2. int main () {
  3. int endYear,year,flag = 0; //flag 为0表示没有找到闰年,为-1表示输入不合法,为1表示有找到闰年
  4. scanf("%d", &endYear); // 输入截止年份
  5. if (endYear < 2001 || endYear > 2100) flag = -1; // 如果截止年份不合法,标记flag=-1
  6. else {
  7. for (year = 2004; year <= endYear; year+=4) { // 遍历的恰好是4的整数被的年份
  8. if (year%100 != 0 || year%400 == 0) { // 这里判断条件可以省略 year%4 == 0
  9. printf("%d\n", year);
  10. flag = 1; // 找到闰年,将flag标记为1
  11. }
  12. }
  13. }
  14. if (flag == -1) printf("Invalid year!");
  15. else if (flag == 0) printf("None");
  16. return 0;
  17. }

更多PTA题目的的参考代码,可以在wx小程序里搜“PTA刷题助手”,或扫下面的二维码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/590774
推荐阅读
相关标签
  

闽ICP备14008679号