首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言實現輸出 21 世紀指定年份前的所有閏年

     編輯:程式設計綜合問答

題目要求

  • 輸入 21 世紀某截止年份 (2001-2099)。
  • 輸出從 2001 年到該年份間所有閏年,每行一個。
  • 輸入非 21 世紀年份輸出 Invalid year!。
  • 無閏年輸出 None。
  • 使用 while 循環和 if 語句。

閏年判斷規則

(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)

完整代碼實現

#include <stdio.h>

int main() {
    int year, current, found = 0;
    
    // 讀取多組測試用例直到 EOF
    while (scanf("%d", &year) == 1) {
        found = 0;
        
        // 輸入合法性檢查
        if (year <= 2000 || year >= 2100) {
            printf("Invalid year!\n");
            continue;
        }
        
        current = 2001;  // 21 世紀起始年
        while (current <= year) {
            if ((current % 4 == 0 && current % 100 != 0) || (current % 400 == 0)) {
                printf("%d\n", current);
                found = 1;
            }
            current++;
        }
        
        if (!found) {
            printf("None\n");
        }
    }
    return 0;
}

關鍵點解析

  1. while 讀取輸入:while (scanf("%d", &year) == 1) 處理多行輸入直到 EOF。
  2. 邊界檢查:21 世紀為 2001-2099,year <= 2000 || year >= 2100 視為非法。
  3. while 遍歷年份:從 2001 遞增到截止年份,逐一判斷閏年條件。
  4. 標記變量:found 記錄是否輸出過閏年,決定是否打印 None。

測試用例

輸入輸出
20482004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2044 2048 (每行一個)
2000Invalid year!
2001None
2100Invalid year!
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved