计算两个人日期之间的差

 1 #include <stdio.h>
 2 int leap(int year);                         //闰年返回1,否则返回0
 3 int yeardays(int year, int month, int day); //返回一年中的第几天
 4 int days(int year);                         //返回一年的总天数
 5 int main(void)
 6 {
 7     int birth_year, birth_month, birth_day;
 8     int to_year, to_month, to_day;
 9     int day_num = 0;
10     scanf("%d %d %d", &birth_year, &birth_month, &birth_day);
11     scanf("%d %d %d", &to_year, &to_month, &to_day);
12 
13     if (birth_year == to_year)
14     {
15         day_num = yeardays(to_year, to_month, to_day) - yeardays(birth_year, birth_month, birth_day);
16     }
17     else
18     {
19         day_num = days(birth_year) - yeardays(birth_year, birth_month, birth_day) + 1;
20         for (int i = birth_year + 1; i < to_year; i++)
21         {
22             day_num = day_num + days(i);
23         }
24         day_num = day_num + yeardays(to_year, to_month, to_day);
25     }
26 
27     printf("%d\n", day_num);
28 
29     return 0;
30 }
31 int leap(int year)
32 {
33     int ret;
34 
35     if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
36     {
37         ret = 1;
38     }
39     else
40     {
41         ret = 0;
42     }
43 
44     return ret;
45 }
46 int yeardays(int year, int month, int day)
47 {
48     int days = 0;
49     int month_days[2][13] = {
50         {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
51         {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
52     };
53     for (int i = 1; i < month; i++)
54     {
55         days = days + month_days[leap(year)][i];
56     }
57     days = days + day;
58 
59     return days;
60 }
61 int years(int year)
62 {
63     int ret;
64     if (leap(year))
65     {
66         ret = 366;
67     }
68     else
69     {
70         ret = 365;
71     }
72 
73     return ret;
74 }

有错误,还没有找到。

猜你喜欢

转载自www.cnblogs.com/2018jason/p/12080294.html