zoukankan      html  css  js  c++  java
  • 关于日期的计算问题。。。。。

    昨天晚上加今天半早上。。。 终于ac了
    两个注意点 一个是关于某年某月某日换算为这年的N天的问题 定义两个数组 一个用来存放闰年的 一个用来存放平年的。。。。。 这样处理起来就不用怕出差错了。。
    用二维字符数组来代替switch 每一个“,,,”表示每行中的字符串 这样方便一点
    最后贴上代码 纪念我的逝去的时间。。。。。。

    #include<stdio.h>
    #include<stdlib.h>
    int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int b[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
    char s[8][10] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    int run(int x)
    {
     if((x%100!=0&&x%4==0)||(x%400==0))
     return 1;
     else
     return 0;
    }
    int days(int year,int mouth,int day)
    {
     int sum=0,i,z;
     for(i=0;i<=mouth-1;i++)
     {
      if(run(year))
      sum+=b[i];
      else
      sum+=a[i];
     }
        sum+=day;
     return sum;
    }

    int get(int year,int mouth,int day)
    {
     if(run(year)==1)
        {
         if((day>b[mouth])||(mouth>12&&mouth<=0)||(year<0&&year>1000)||day==0)
         return 0;
         else
         return 1;
        }
     else
     {
      if((day>a[mouth])||(mouth>12&&mouth<=0)||(year<0&&year>1000)||day==0)
            return 0;
      else
      return 1;
     }
    }
    int main()
    {
     int year,mouth,day,sum,i;
     while(scanf("%d %d %d",&year,&mouth,&day)!=EOF)
     {
      sum=0;
      if(get(year,mouth,day)==0)
      printf("illegal\n");
      else
      {
       for(i=1;i<year;i++)
       {
        if(run(i)==1)
        sum+=2;
        else
        sum+=1;
        
       }
       sum=sum+days(year,mouth,day)-1;
       sum=sum%7;
       printf("%s\n",s[sum]);
      }
     
     }
     return 0;
    }

  • 相关阅读:
    PID算法控制直流电机笔记
    HAL库直流电机编码测速(L298N驱动)笔记
    HAl库控制L298N直流电机旋转笔记
    MQTT介绍与使用(转载)
    STM32中STD、HAL、LL库比较
    rpm检验是否被改动过
    find命令 参数
    会话管理测试时的注意点
    无权限修改用户组权限的状况一
    burpsuite + sqlmap 日志导出批量扫描
  • 原文地址:https://www.cnblogs.com/z1141000271/p/5271487.html
Copyright © 2011-2022 走看看