程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於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循環不能再聲明變量,否則會報錯。

 

摘自 小源求學
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved