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

計算年內天數:日期轉換為當年第幾天的算法與閏年處理

     編輯:關於C語言

問題描述

輸入年月日,計算該日期是當年的第幾天。輸入第一行為測試用例數 n,隨後 n 行各包含年、月、日三個整數。保證輸入日期合法。

核心邏輯

  1. 預定義平年每月天數陣列:{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
  2. 累加前 (month-1) 月的天數
  3. 加上當月日數
  4. 若為閏年且月份大於 2,總天數加 1

閏年判斷規則

  • 能被 400 整除,或
  • 能被 4 整除但不能被 100 整除

代碼實現

#include <stdio.h>

int checkyear(int year);

int main() {
    int i, flag, num, year, month, day, sum;
    int array[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    scanf("%d", &num);
    while (num--) {
        scanf("%d %d %d", &year, &month, &day);
        sum = 0;
        flag = checkyear(year);

        for (i = 0; i < month; i++) {
            sum += array[i];
        }
        sum += day;

        if (flag && month > 2) sum++;

        printf("%d", sum);
        if (num > 0) printf("\n");
    }
    return 0;
}

int checkyear(int year) {
    int flag = 0;
    if ((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0))
        flag = 1;
    return flag;
}

測試樣例

輸入:

2
2009 1 1
2008 1 3

輸出:

1
3

2009 年非閏年,1月1日是第 1 天;2008 年閏年,1月3日是第 3 天。

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