閱讀628 返回首頁    go 阿裏雲 go 技術社區[雲棲]


2012 藍橋杯【決賽試題】星期幾

題目描述:

    1949年的國慶節(10月1日)是星期六。
    今年(2012)的國慶節是星期一。
    那麼,從建國到現在,有幾次國慶節正好是星期日呢?

    隻要答案,不限手段!
    可以用windows日曆,windows計算器,Excel公式,。。。。。
    當然,也可以編程!
    不要求寫出具體是哪些年,隻要一個數目!
    千萬不要提交源代碼!
    答案不要寫在這裏,寫在“解答.txt”中

 

思路:一般的日期計算,吧星期日當做星期7算就可以了,對所在天數取餘,9月算完在加一天對七取餘看看是不是7,如果是那麼成立並輸出答案,不是不成立。

注意:閏年的判斷,月份天數的判斷(二月十分重要),邊界問題。

 

AC代碼:

#include<stdio.h>
int Run(int year)
{
    if(year%400==0||(year%4==0&&year%100!=0))
    return 1;
    else
    return 0;
}
int month(int year,int n)
{
    int aws;
    switch(n)
    {
       case 1:aws=31;break;
       case 2:{
            if(Run(year))
            aws=29;
            else aws=28;
       }break;
       case 3:aws=31;break;
       case 4:aws=30;break;
       case 5:aws=31;break;
       case 6:aws=30;break;
       case 7:aws=31;break;
       case 8:aws=31;break;
       case 9:aws=30;break;
       case 10:aws=31;break;
       case 11:aws=30;break;
       case 12:aws=31;break;
    }
    return aws;
}
int main()
{
    int i,j,x,sum;
    sum=5;
    for(i=10;i<=12;i++)
    {
      sum+=month(1949,i);
    }
    for(i=1950;i<=2013;i++)//今天是2014年3月14日,所以算到2013年即可 
    {
      for(j=1;j<=12;j++)
      {
         sum+=month(i,j);
         if(j==9)
         {
            x=sum%7;
            if(x+1==7)
            printf("%d年的國慶節是星期日。\n",i);
         }
      }
    }
    return 0;
}

打印結果:

1950年的國慶節是星期日。
1961年的國慶節是星期日。
1967年的國慶節是星期日。
1972年的國慶節是星期日。
1978年的國慶節是星期日。
1989年的國慶節是星期日。
1995年的國慶節是星期日。
2000年的國慶節是星期日。
2006年的國慶節是星期日。

所以本題答案為9天

最後更新:2017-04-03 12:55:38

  上一篇:go 今日成為CSDN認證專家
  下一篇:go Printf格式輸出