-
Notifications
You must be signed in to change notification settings - Fork 0
/
2.4计算日期.c
48 lines (42 loc) · 883 Bytes
/
2.4计算日期.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <limits.h>
#define DATE_MAX_LEN 10
int strtoi(char*, char*);
int main()
{
char s[DATE_MAX_LEN] = {0};
scanf("%s", s);
int n = 0;
for (; s[n] != '\0'; n++){};
int y, m, d;
y = strtoi(s, s + n - 4);
m = strtoi(s + n - 4, s + n - 2);
d = strtoi(s + n - 2, s + n);
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int rst = 0;
if ((y % 4 == 0 && y % 100 != 0 || y % 400 == 0) && m >= 3)
{
++rst;
}
for (; m > 1; m--)
{
rst += days[m - 2];
}
printf("%d", rst + d);
return 0;
}
int strtoi(char *begin, char *end)
{
if (end - begin >= 10 || end[-1] > '9' || end[-1] < '0')
{
return INT_MIN;
}
else if (begin == end)
{
return 0;
}
else
{
return end[-1] - '0' + 10 * strtoi(begin, end - 1);
}
}