以下是一個簡單的C程序,用于計算兩個日期之間的天數:
#include <stdio.h>
// 計算閏年的函數
int leapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1;
} else {
return 0;
}
}
// 計算某年某月的天數
int daysInMonth(int year, int month) {
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (leapYear(year) && month == 2) {
return 29;
} else {
return days[month - 1];
}
}
// 計算從公元1年1月1日到某年某月某日的天數
int daysFromYear1(int year, int month, int day) {
int days = 0;
for (int y = 1; y < year; y++) {
days += leapYear(y) ? 366 : 365;
}
for (int m = 1; m < month; m++) {
days += daysInMonth(year, m);
}
days += day - 1;
return days;
}
// 計算兩個日期之間的天數
int daysBetweenDates(int year1, int month1, int day1, int year2, int month2, int day2) {
int days1 = daysFromYear1(year1, month1, day1);
int days2 = daysFromYear1(year2, month2, day2);
return days2 - days1;
}
int main() {
int year1, month1, day1, year2, month2, day2;
printf("請輸入第一個日期(年 月 日):");
scanf("%d %d %d", &year1, &month1, &day1);
printf("請輸入第二個日期(年 月 日):");
scanf("%d %d %d", &year2, &month2, &day2);
int days = daysBetweenDates(year1, month1, day1, year2, month2, day2);
printf("兩個日期之間的天數為:%d\n", days);
return 0;
}
這個程序首先通過leapYear
函數計算是否為閏年,然后通過daysInMonth
函數計算某年某月的天數,接著通過daysFromYear1
函數計算從公元1年1月1日到某年某月某日的天數,最后通過daysBetweenDates
函數計算兩個日期之間的天數。