| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2469 人关注过本帖
标题:计算日期差的问题 求指点
取消只看楼主 加入收藏
Aa1060030551
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2017-3-19
结帖率:83.33%
收藏
已结贴  问题点数:15 回复次数:5 
计算日期差的问题 求指点
计算日期差 就是在我输入的1999 4 1和2000 4 1时它输出了365 但是应该是366 求教怎么改……
程序代码:
#include
#define isPrime(year) ((year%4==0&&year%100!=0)||(year%400==0))
struct date
{
    int year;
    int month;
    int day;
};
int main(void)
{   
    int dateDiff(struct date mindate,struct date maxdate);
    struct date mindate,maxdate;
    int days;
    scanf("%i %i %i",&mindate.year,&mindate.month,&mindate.day);
    scanf("%i %i %i",&maxdate.year,&maxdate.month,&maxdate.day);
    days=dateDiff(mindate,maxdate);   

 printf("%d\n",days);
    return 0;
}
int dateDiff(struct date mindate,struct date maxdate)
{
    int days=0,j,flag;
    const int primeMonth[][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
    struct date tmp;
    if ((mindate.year>maxdate.year)|| (mindate.year==maxdate.year&&mindate.month>maxdate.month)||(mindate.year==maxdate.year&&mindate.month==maxdate.month&&mindate.day>maxdate.day))
    {
        tmp=mindate;
        mindate=maxdate;
        maxdate=tmp;
    }   
    for(j=mindate.year;j<MAXDATE.YEAR;++J)
        days+=isPrime(j)?366:365;
    flag=isPrime(maxdate.year);
    for (j=1;j<MAXDATE.MONTH;J++)
        days+=primeMonth[flag][j-1];
        flag=isPrime(maxdate.year);
        for (j=1;j<MINDATE.MONTH;J++)
          days-=primeMonth[flag][j-1];
        days=days+maxdate.day-mindate.day;
        return days;
} 












[此贴子已经被作者于2017-6-21 10:17编辑过]

搜索更多相关主题的帖子: year struct date int flag 
2017-06-20 17:12
Aa1060030551
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2017-3-19
收藏
得分:0 
以下是引用wp231957在2017-6-20 17:32:56的发言:

这个日期差如何计算 算不算头尾  这都有待研究

比如你这个例子:
25 26 27 28 29 1  这是算首尾6天
   26 27 28 29    这应该是纯粹的差 4天
要是算头不算尾 或者算尾不算头 是5天

我就直接回您这一条回复了 2000年确实是闰年我记错了 那可能出了问题的是1000年的数据 是算头不算尾的 具体是那组数据出了问题我也不清楚....我那个系统交了不能看评判
2017-06-20 21:56
Aa1060030551
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2017-3-19
收藏
得分:0 
回复 5楼 peng880610
能啊……
2017-06-21 09:02
Aa1060030551
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2017-3-19
收藏
得分:0 
回复 6楼 wube
非常难过了……还有办法在这个程序上改吗
2017-06-21 09:03
Aa1060030551
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2017-3-19
收藏
得分:0 
回复 5楼 peng880610
我自己的代码是小写 粘过来变成了大写
2017-06-21 09:06
Aa1060030551
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2017-3-19
收藏
得分:0 
我发现我的错误不是这的问题……我很恐慌 我去调调
2017-06-21 09:19
快速回复:计算日期差的问题 求指点
数据加载中...
 
   



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

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