首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言判斷閏年:goto 循環輸入與標準邏輯實現

     編輯:關於C

代碼

 0 && year <= 3000) {
        if (year % 4 != 0) leap = 0;
        else if (year % 100 != 0) leap = 1;
        if (year % 400 != 0) leap = 0;
        printf("%d %s a leap year.\n", year, leap ? "is" : "is not");
    } else {
        printf("輸入錯誤,");
    }
    goto flag;
    return 0;
}

邏輯分析

  • 先判斷 %4 != 0 → 平年。
  • 能被 4 整除再判斷 %100 != 0 → 閏年。
  • 世紀年需 %400 == 0 才閏年,故最後 if (year%400!=0) leap=0 覆蓋前面結果。

改進建議

  1. 禁用 goto,改用 while(1) 或 do-while 結構化循環。
  2. 邏輯合併為單一表達式:leap = (year%4==0 && year%100!=0) || (year%400==0);
  3. 輸入驗證:檢查 scanf 返回值,處理非數字輸入。

結構化版本

 3000) { puts("範圍 1-3000"); continue; }
    int leap = (year%4==0 && year%100!=0) || (year%400==0);
    printf("%d %s leap year.\n", year, leap ? "is" : "is not");
}

總結

goto 還有其歷史場景(錯誤處理跳轉),但現代 C 編程強烈建議用結構化控制流。閏年邏輯單一表達式最清晰,易維護、易優化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved