zoukankan      html  css  js  c++  java
  • 时间类问题

    1.闰年判断,4年一闰,100年不闰,400年再闰

    1 bool isLeap(int year){
    2     return (year%4==0&&year%100!=0)||(year%400==0);
    3 }

    闰年2月---29     平年2月-----28
    4、6、9、11月------------30   

    其他月份则为31天

    2.求指定日期是星期几

    基姆拉尔森计算公式: w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7

    结果对应关系     0:星期日   1:星期一    2:星期二  ........... 6:星期六

    注意:需要把一月和二月看成是上一年的十三月和十四月

    列:

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 
     5 int fun(int y,int m,int d){
     6     if(m==1||m==2){  //需要把一月和二月看成是上一年的十三月和十四月   如果是2004-1-10 则换算成2003-13-10来代入公式计算
     7         m+=12;
     8         y--;
     9     }
    10     return (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;
    11 }
    12 
    13 int main()
    14 {
    15     int i,y,m,d;
    16     printf("请输入要判断的日期,格式为:y-m-d
    ");
    17     scanf("%d-%d-%d",&y,&m,&d);
    18     i=fun(y,m,d);
    19     switch(i)
    20     {
    21     case 0:
    22         printf("那天是星期日
    ");
    23         break;
    24     case 1:
    25         printf("那天是星期一
    ");
    26         break;
    27     case 2:
    28         printf("那天是星期二
    ");
    29         break;
    30     case 3:
    31         printf("那天是星期三
    ");
    32         break;
    33     case 4:
    34         printf("那天是星期四
    ");
    35         break;
    36     case 5:
    37         printf("那天是星期五
    ");
    38         break;
    39     case 6:
    40         printf("那天是星期六
    ");
    41         break;
    42     default:
    43         printf("输入错误!");
    44         break;
    45     }
    46     return 0;
    47 }

    3.几天后是几年几月几号(如高斯日记和星系炸弹)

     高斯日记

        大数学家高斯有个好习惯:无论如何都要记日记。

        他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210

        后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。

        高斯出生于:1777年4月30日。
        在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。

        高斯获得博士学位的那天日记上标着:8113   

        请你算出高斯获得博士学位的年月日。

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 
     5 int year=1777,month=4,day=30;
     6 
     7 bool isLeap(){ //闰年判断
     8     return (year%4==0&&year%100!=0)||(year%400==0);
     9 }
    10 
    11 int isEndofMonth(){  //判断是否月末
    12     switch(month)
    13     {
    14     case 4:          
    15     case 6:
    16     case 9:          /*如果是4,6,9,11月则判断day是否到了30,如果是则表示到了月末了*/
    17     case 11:   
    18         return day==30;
    19     case 2:       //2月先判断是否闰年
    20         if (isLeap())
    21             return day==29;  //如是闰年 判断day是否到了29,如果是则表示到了月末了
    22         else
    23             return day==28;  //如不是闰年 判断day是否到了28,如果是则表示到了月末了
    24     default:
    25         return day==31;    //既不是4,6,9,11月也不是2月,则判断day是否到了31,如果是则表示到了月末了
    26     }
    27 }
    28 
    29 void incDay(){
    30     if (isEndofMonth())//判断是否是月末
    31     {
    32         if(month==12){//年末
    33             day=1;month=1;year++;
    34         }
    35         else{
    36             day=1;month++;
    37         }
    38     }
    39     else{  //既不是月末,也不是年末
    40         day++;
    41     }
    42 }
    43 
    44 void addDay(int days){
    45     for(int i=1;i<days;i++)
    46         incDay();
    47 }
    48 
    49 int main()
    50 {
    51     addDay(5343);
    52     cout<<year<<"-"<<month<<"-"<<day<<endl;
    53     return 0;
    54 }
    View Code
  • 相关阅读:
    关于Maya Viewport 2.0 API 开发的介绍视频
    春节大假
    Some tips about the life cycle of Maya thread pool
    Can I compile and run Dx11Shader for Maya 2015 on my side?
    How to get current deformed vertex positions in MoBu?
    想加入全球首届的 欧特克云加速计划吗?
    三本毕业(非科班),四次阿里巴巴面试,终拿 offer(大厂面经)
    mac、window版编辑器 webstorm 2016... 永久破解方法。
    node 搭载本地代理,处理web本地开发跨域问题
    js 一维数组,转成嵌套数组
  • 原文地址:https://www.cnblogs.com/bfcs/p/10717515.html
Copyright © 2011-2022 走看看