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

           

           

           

     

  • 相关阅读:
    牛客网 二叉树的镜像 JAVA
    牛客网 反转链表 JAVA
    牛客网 调整数组顺序使奇数位于偶数前面 JAVA
    Integer to Roman LeetCode Java
    Valid Number leetcode java
    Longest Common Prefix
    Wildcard Matching leetcode java
    Regular Expression Matching
    Longest Palindromic Substring
    Add Binary LeetCode Java
  • 原文地址:https://www.cnblogs.com/entrepre/p/5376807.html
Copyright © 2011-2022 走看看