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

C 語言計算年內第幾天:閏年判斷與累加天數經典算法

     編輯:程式設計綜合問答

題目要求

輸入格式「yyyy/mm/dd」,輸出該日期是當年的第幾天。閏年規則:能被 4 整除但不能被 100 整除、或能被 400 整除。

標準算法流程

  1. 解析年、月、日
  2. 判斷閏年,設置 2 月天數
  3. 累加前 (月-1) 月天數 + 當前日

參考代碼

#include 

int isLeap(int y) {
    return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0);
}

int main() {
    int y, m, d;
    scanf("%d/%d/%d", &y, &m, &d);
    int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
    if (isLeap(y)) days[1] = 29;
    int sum = 0;
    for (int i = 0; i < m - 1; i++) sum += days[i];
    sum += d;
    printf("%d\n", sum);
    return 0;
}

測試用例

輸入輸出說明
2009/03/0261平年 1+2 月 31+28=59 +2=61
2000/03/0262閏年 2 月 29 天,59+1+2=62

進階優化

  • 預計算平年/閏年每月累計天數表,O(1) 查表
  • 輸入合法性校驗(月 1-12、日符合當月天數)

教材經典例題,百度「C語言 計算年內第幾天」即可找到海量講解與變體。

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