当前位置:编程学习 > C/C++ >>

算算今天是星期几

题目描述:
今天是2007年10月17日,星期六. 现在告诉你一个日期,你能回答今天是星期几吗?
输入描述:
输入数据有多组,每组占一行,输入三个整数year(0<year<10000), month(0<=month<13), day(0<=day<32).
输出描述:
对于每组输入数据,输出一行,表示星期几,如果不合法输出“illegal”。
 
以下为代码:
 
 1 #include <stdio.h>
 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("%d %d %d", &year,&month,&day) != EOF)
22     {
23         if(year<= 0 || year >= 10000 || month < 0 || month >= 13 || day < 0 || day >= 32)
24         {
25             printf("illegal\n");
26             continue;
27         }
28         if(month == 2)
29         {
30             if(isLeap(year))
31             {
32                 if(day > year2[month])
33                 {
34                     printf("illegal\n");
35                     continue;
36                 }
37             }
38             else
39             {
40                 if(day > year1[month])
41                 {
42                     printf("illegal\n");
43                     continue;
44                 }
45             }
46
47         }
48         //现在的日期与公元第一天开始相隔的天数
49        
50         for(k = 1;k < year;k++)
51         {
52             if(isLeap(k))
53                 days = days + 366;
54             else
55                 days = days + 365;
56         }
57        
58         for(j = 0; j < month; j++)
59         {
60             if(isLeap(year))
61                 days = days + year2[j];
62             else
63                 days = days + year1[j];
64         }
65         days = days + day;
66         //除以7求余就可以求出星期
67         getDate = date[days % 7];
68         printf("%s\n", getDate);
69         //数据清零
70         days = 0;
71     }
72 }
 
 
测试数据:

 \



 

在这个测试中遇到了一些问题,在C语言中,While循环里面的for循环不能再声明变量,否则会报错。

 

摘自 小源求学
补充:软件开发 , C语言 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,