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