2012 蓝桥杯 星期几 【决赛试题】

算法学习 专栏收录该内容
26 篇文章 0 订阅

 星期几 

1949年的国庆节(10月1日)是星期六。 
    今年(2012)的国庆节是星期一。
    那么,从建国到现在,有几次国庆节正好是星期日呢?

    只要答案,不限手段!
    可以用windows日历,windows计算器,Excel公式,。。。。。
    当然,也可以编程!
    不要求写出具体是哪些年,只要一个数目!
    千万不要提交源代码!
    答案不要写在这里,写在“解答.txt”中

 

思路:一般的日期计算,吧星期日当做星期7算就可以了,对所在天数取余,9月算完在加一天对七取余看看是不是7,如果是那么成立并输出答案,不是不成立。

注意:闰年的判断,月份天数的判断(二月十分重要),边界问题。


参考代码如下:

#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;
}

运行结果如下:


但对于蓝桥杯考试来说,直接用window自带的日历直接 数就好了,不过要仔细地来说,容易出错的,如果数对的话 节约了时间!

  • 2
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页

打赏

徐刘根

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值