#25877: C language 簡易寫法


22207807 (會打Code的貓)

學校 : 逢甲大學
編號 : 156777
來源 : [140.134.241.201]
最後登入時間 :
2023-03-14 12:33:09
a263. 日期差幾天 -- 板橋高中練習題 | From: [42.72.86.8] | 發表日期 : 2021-06-29 19:20

#include<stdio.h>

#include<math.h>

int main () {

int y[2] = {0},m[2] = {0},d[2] = {0},total[2] = {0};

int month_day[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

while(scanf("%d %d %d %d %d %d",&y[0],&m[0],&d[0],&y[1],&m[1],&d[1]) != EOF) {

for(int j = 0; j < 2; j++) {

total[j] = 0;

for(int i = 0; i < y[j]; i++) {

if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {

total[j] += 366;

} else {

total[j] += 365;

}

}

if(y[j] % 4 == 0 && y[j] % 100 != 0 || y[j] % 400 == 0) {

for(int i = 1; i < m[j]; i++) {

if(i == 2) {

total[j] += month_day[i] + 1;

} else {

total[j] += month_day[i];

}

}

} else {

for(int i = 1; i < m[j]; i++) {

total[j] += month_day[i];

}

}

}

printf("%d\n",abs(total[0] + d[0] - total[1] - d[1]));

}

return 0;

}

請不要跟我一樣以為單數都是31天,被題目搞死這裡XDD(罰寫),所以我們先寫出月份的陣列

有兩行輸入所以for迴圈就到2

我們先計算0到輸入的那年,所有天數的總和(不包含當年,這點很重要),先簡單區分是否閏年,是就加366否就365

接者計算月份,一樣計算1月到那月,所有天數的總和(不包含當月,這點很重要),先簡單區分是否為閏年是的話就在i為2的時候多加1

最後把日期加上去,在兩數相減,記得使用abs(),因為我們不知道結果會不會為負數

有誤還請回覆我~

 
ZeroJudge Forum