标题:有关日期差的问题 求指点
取消只看楼主
宁缺T
Rank: 1
等 级:新手上路
帖 子:21
专家分:8
注 册:2019-9-12
结帖率:87.5%
已结贴  问题点数:25 回复次数:0 
有关日期差的问题 求指点
计算时间差我是按较小的年份一天一天加到较大年份的。

代码如下:

程序代码:
#include<stdio.h>
#include<stdbool.h>
    bool isLeap(int year){
        return (year%4==0&&year%100!=0) || (year%400==0);
    }
int main(){
    int month[13][2]={(0,0),(31,31),(28,29),(31,31),(30,30),(31,31),(30,30),(31,31),(31,31),(30,30),(31,31),(30,30),(31,31)};
    int time1,y1,m1,d1;
    int time2,y2,m2,d2;
    int tmp;
    int cnt=1;
    while(scanf("%d%d",&time1,&time2)!=EOF)//输入年月日并将较大值放入time2中

    {
        if(time1>time2){
            tmp=time1;

            time1=time2;
            time2=tmp;
        }
    }
    //从8位数据中分离出年月日

    y1=time1/10000;
    m1=time1/100%100;
    d1=time1%100;
   

    y2=time2/10000;
    m2=time2/100%100;
    d2=time2%100;
    //计算从time1到time2所需天数

//    do{
//        d1++;
//         cnt++;
//        if(d1>month[m1][isLeap(y1)]){
//            d1=1;
//            m1++;
//    
//        }
//        if(m1>12){
//            y1++;
//            m1=1;
//        }
//       

//    }while(y1!=y2&&m1!=m2&&d1!=d2);//do-while就不知道哪里有问题了
   

    while(y1<y2||m1<m2||d1<d2)
    {
        d1++;
        if(d1==month[m1][isLeap(y1)]+1)//我写的是if(d1>month[m1][isLeap(y1)])
        {
            d1=1;
            m1++;
        }
        if(m1==13)//同上if(m1>12)
        {
            y1++;
            m1=1;
        }
        cnt++;
    }
    printf("%d\n",cnt);
    return 0;
   

}
   
但是用自己的逻辑判断就得不到结果了。
搜索更多相关主题的帖子: 日期 int || if year 
2019-12-08 19:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498287-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.390984 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved