a263.
日期差幾天
--
板橋高中練習題
| From: [140.118.74.187] |
發表日期
:
2023-10-24 09:59
#include <stdio.h>
int main() {
int Date1[3] = { 0 };
int Date2[3] = { 0 };
//閨年2月有29天
int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };//天數
while (scanf("%d %d %d", &Date1[0], &Date1[1], &Date1[2]) != EOF) {
int sum = 0;
scanf("%d %d %d", &Date2[0], &Date2[1], &Date2[2]);
if (Date1[0] > Date2[0]) { //比較大小,預設Date1[0] 小於 Date2[0]
int t = 0;
for (int i = 0; i < 3; i++) {
t = Date1[i];
Date1[i] = Date2[i];
Date2[i] = t;
}
}
else if (Date1[0] == Date2[0]) {
if (Date1[1] > Date2[1]) {
int t = 0;
for (int i = 1; i <= 2; i++) {
t = Date1[i];
Date1[i] = Date2[i];
Date2[i] = t;
}
}
else if (Date1[1] == Date2[1]) {
if (Date1[2] > Date2[2]) {
int t = 0;
t = Date1[2];
Date1[2] = Date2[2];
Date2[2] = t;
}
}
} //到這裡都是在比較日期誰先誰後
for (int i = Date1[0]; i <= Date2[0]; i++) {//用for跑年份
if (i % 4 == 0) {//判斷是否閨年
if (i % 100 != 0) days[1] = 29;
else if (i % 400 == 0) days[1] = 29;
else days[1] = 28;
}
else days[1] = 28; //不是的情況
for (int j = 0; j < 12; j++) { //每個年份有12個月
if (i == Date1[0]) { //因為起始點是Date1[1](月份),有包括當前月份
if (j < Date1[1] - 1) continue;
}
if (i == Date2[0]) { //因為終點是Date2[1](月份),並不包括當前月份
if (j >= Date2[1] - 1) continue;
}
sum += days[j];
}
}
sum = sum - Date1[2] + Date2[2]; //把多算少算的,補回去
printf("%d\n", sum);
}
return 0;
}
比較麻煩在於順序,如果有大佬會更好的順序比較,也可以在下方討論,謝謝