01:
02:
03:
04:
05:
06:
07:
08:
09:
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:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
|
include
int main () {
int leapmonth[13] = {0,31,29,31,30,31,30,31,31,30,31,31,31};
int normalmonth[13] = {0,31,28,31,30,31,30,31,31,30,31,31,31};
char week[7][10] =
{"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};
int year = 0, month = 0, day = 0, count = 0;
for (; count < 1;) {
printf("This program cannot output a day of the week before October
15, 1583 because it uses Gregorian.\n");
printf("Please input date\n\n");
printf("Year => ");
scanf("%d", &year);
if (year < 1583) {
continue;
}
printf("Month => ");
scanf("%d", &month);
if (1 > month || month > 12) {
continue;
}
printf("Day => ");
scanf("%d", &day);
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
if (day > leapmonth[month]) {
continue;
}
}else if (day > normalmonth[month]) {
continue;
}
if (year == 1582 && month == 10 && day < 15 || year == 1582 && month < 10) {
continue;
}else{
break;
}
}
int a = (year - 1) / 4;
int b = (year - 1) / 100;
int c = (year - 1) / 400;
int d = a - b + c;
int e = 0;
int f = (year - 1) * 365 + d;
int count2 = 0;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
for (;count2 <= month - 1; count2++)
e = e + leapmonth[count2];
}else{
for (;count2 <= month - 1; count2++)
e = e + normalmonth[count2];
}
int g = e + f + day;
int h = (g % 7);
printf("%d/%d/%d(%s)\n",year,month,day,week[h]);
}
|