zoukankan      html  css  js  c++  java
  • 计算星期

    题目内容:

    给出任意一个年月日(年>1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。

    输入格式:

    年 月 日

    输出格式:

    0~6。
        星期日用 0 表示,星期一用 1 表示,星期二用 2 表示......星期六用 6 表示。

    假设年份大于1900。先想一想:我们现在只会使用 if 语句,该如何建立数学模型?

    输入样例:

    2013 3 11

    输出样例:

    1

    输入样例:

    2013 13 15

    输出样例:

    month is error.

    程序代码:*

          

    #include "stdio.h"
    void CaculateWeekDay(int y,int m, int d);
    int JudgeDay(int y, int m, int d);
    int leap (int y);
    int main()
    {
      int year = 0,month = 0,day = 0;
      scanf ("%d %d %d",&year,&month,&day) ;
      if (month > 12 || month < 1)
        {
        printf("month is error.");
        if(JudgeDay (year , month , day))
        printf("day is error.");
        }
      else if(JudgeDay (year , month , day))
        printf("day is error.");
      else
        CaculateWeekDay(year , month , day);
      return 0;

    }
    int leap (int y)//判断是否是闰年
    {
      if((y%100!=0&&y%4==0)||y%400==0)
        return 1;
      else return 0;
    }

    void CaculateWeekDay(int y,int m, int d)//计算是星期几
    {

      int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
      int i;
      if(m>2&&leap(y))d++;
      for(i=1;i<m;i++)
        {
        d+=mon[i];
        }
      d=y-1+(y-1)/4-(y-1)/100+(y-1)/400+d;
      switch(d%7)
        {
        case 0: printf("0 "); break;
        case 1: printf("1 "); break;
        case 2: printf("2 "); break;
        case 3: printf("3 "); break;
        case 4: printf("4 "); break;
        case 5: printf("5 "); break;
        case 6: printf("6 "); break;
        }
    }
    int JudgeDay(int y, int m, int d)//判断输入是否合法
    {
      if (d <= 0 || d> 31)
      return 1;
      switch (m)
        {
        case 4:
        case 6:
        case 9:
        case 11: if (d== 31) return 1; break;
        case 2: if (!leap(y)&&(d> 28))
              {
              return 1; break;
              }
            else if(d>29)
              {
              return 1; break;
              }
        }
      return 0;
    }

           

           

           

     

  • 相关阅读:
    (已解决)mac安装mysql出现:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/my...
    非root用户启动redis容器报错mkdir: cannot create directory '/bitnami/redis': Permission denied
    VirtualBox虚拟机E_INVALIDARG (0x80070057)
    非root用户启动redis容器报错mkdir: cannot create directory '/bitnami/redis': Permission denied
    添加共享文件夹
    Skipping acquire of configured file ···doesn't support architecture 'i386' acquire of configured file
    docker镜像运行错误排查
    debian9使用国内源安装docker以及一些使用方法
    docker创建镜像及push镜像出错问题
    mongodb参数
  • 原文地址:https://www.cnblogs.com/entrepre/p/5376807.html
Copyright © 2011-2022 走看看