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

YYYY-MM-DD 日期格式解析:計算當年第幾天的簡化輸入版本

     編輯:關於C語言

問題描述

輸入格式為 "YYYY-MM-DD" 的日期字符串(多行直到 EOF),輸出該日期是當年的第幾天。輸入保證合法。

與前題差異

  • 輸入格式:帶連字符的單行字符串 vs 空格分隔的三整數
  • 讀取方式:scanf("%d-%d-%d") 直接解析 vs 三次 scanf
  • 終止條件:EOF 循環 vs 指定測試用例數

代碼實現

#include <stdio.h>

int checkyear(int year);

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

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

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

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

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

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

關鍵點

scanf 格式字符串 "%d-%d-%d" 會自動跳過連字符,直接讀取三個整數,簡化了解析邏輯。while 循環配合 EOF 檢查實現不定行數輸入處理。

測試樣例

輸入:

2000-01-01

輸出:

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