我寫了一個C程序,計算兩個日期之間的天數。不幸的是,它不能正確編譯。我不知道爲什麼。有人可以幫我修復代碼嗎?看起來SCANF和PRINTF函數存在一些問題。我甚至沒有機會輸入我自己的日期。C程序,計算兩個日期之間的天數
這是我得到的輸出: 非法日期 -1607965827
請幫助我。提前致謝!
#include <stdio.h>
#include <stdlib.h>
int days_in_month[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
struct date {
int day;
int month;
int year;
};
int leap_year(int year) {
if(year%400==0) return 1;
if(year%4==0 && year%100!=0) return 1;
return 0;
}
int correct(struct date d) {
if(d.day < 1 || d.day > days_in_month[d.month]) return 0;
if(d.month < 1 || d.month > 12) return 0;
return 1;
}
int number_of_days(struct date d) {
int result = 0;
int i;
for(i=1; i < d.year; i++) {
if(leap_year(i))
result += 366;
else
result += 365;
}
for(i=1; i < d.month; i++) {
result += days_in_month[i];
if(leap_year(d.year) && i == 2) result++;
}
result += d.day;
return result;
}
int main() {
struct date first, second;
int days;
scanf("%d %d %d", first.day, first.month, first.year);
scanf("%d %d %d", second.day, second.month, second.year);
if(!correct(first) || !correct(second)) {
printf("Illegal date\n");
}
days = number_of_days(first) - number_of_days(second);
printf("%d", days);
return 0;
}
您對'scanf'的使用是錯誤的。通過指針來告訴讀取數據的位置。 – MikeCAT
當你運行它時,你的程序是否行爲異常?如果你能夠運行它,它會正確編譯。 – Steve
我在代碼中看不到任何C++。 –