#38082: c 基礎寫法


q0908309831@gmail.com (浪人飄飄)

學校 : 不指定學校
編號 : 234983
來源 : [140.118.154.127]
最後登入時間 :
2023-11-15 14:44:05
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;
}
比較麻煩在於順序,如果有大佬會更好的順序比較,也可以在下方討論,謝謝
 
ZeroJudge Forum