C语言根据日期求星期(分段计算方式)
-
C
语言根据日期求星期
今天是
2007
年
10
月
17
日,星期六
.
现在告诉你一个日期,你能回答今天是星期几吗?
输入描述:
输入数据有多组,每组占
一行,输入三个整数
<
br> <
br> <
br>
year(0
month(0<=month<13),
day(0<=day<32).
输出描述:
对于每组输入数据,输出
一行,表示星期几,如果不合法输出“
illegal
”。
p>
以下为代码:
1 #include
2 char date[7][7]
= {
星期日
星期一
星期二
星期三
星期四
星期五
星期六
3 //
判断年份是否为闰年
4 int isLeap(int year)
5 {
6
if((year % 4 == 0 && year % 100 != 0)
|| year % 400 == 0)
7
return 1;
8
return 0;
9 }
10
11 int
main()
12 {
13
int
year,month,day;
14
//
平年各个月的天数
15
int year1[13] =
{0,31,28,31,30,31,30,31,31,30,31,30,31};
16
//
闰年各个月的天数
17
int year2[13] =
{0,31,29,31,30,31,30,31,31,30,31,30,31};
18
//days
为距离公元第一天的天数
19
int days = 0, k = 0, j = 0;
20
char *getDate;
21
while(scanf(
22
{
23
if(year<= 0 || year >= 10000 || month < 0 || month
>= 13 || day
< 0 || day >= 32)
24
{
25
printf(
26
continue;
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
if(isLeap(year))
{
if(day > year2[month])
{
printf(
continue;
}
}
else
{
if(day > year1[month])
{
printf(
continue;
}
}
现在的日期与公元第一天开始相隔的天数
if(isLeap(k))
days = days + 366;
if(month == 2)
{
}
//
for(k = 1;k
< year;k++)
{
-