• 关于日期的计算问题。。。。。


    昨天晚上加今天半早上。。。 终于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;
    }

  • 相关阅读:
    prism.js——让网页中的代码更好看
    WebAPI之FormData
    ES6背记手册
    搭建本地的百度脑图
    webpack到底是干什么用的?
    浅拷贝和深拷贝
    vue 中使用 watch 的各种问题
    跳一跳外挂的python实现--OpenCV步步精深
    Opencv基础课必须掌握:滑动条做调色盘 -OpenCV步步精深
    Opencv稍微高级点的鼠标事件-OpenCV步步精深
  • 原文地址:https://www.cnblogs.com/z1141000271/p/5271487.html
Copyright © 2020-2023  润新知