| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3114 人关注过本帖
标题:任意两天之间相隔的天数
只看楼主 加入收藏
迷途的菜鸟
Rank: 2
等 级:论坛游民
帖 子:36
专家分:50
注 册:2012-3-20
收藏
得分:0 
回复 5楼 S_Ringo
但是还是要考虑闰年问题啊,笼统的乘365不成吧。。
2012-06-08 21:06
迷途的菜鸟
Rank: 2
等 级:论坛游民
帖 子:36
专家分:50
注 册:2012-3-20
收藏
得分:0 
#include <stdio.h>
#include <math.h>
int year_leap(int );
int day_of_year(int , int , int );
main()
{
    struct date
    {
        int year;
        int month;
        int day;
    };
    int sum_day1, sum_day2, day_between;
    struct date date1, date2;
    printf("please in put the first date\n");
    printf("year month date\n");
    scanf("%d%d%d", &date1.year,&date1.month,&date1.day);
    printf("compute the day of the year:");
    sum_day1 = day_of_year (date1.year , date1.month , date1.day );
    printf("first days :%d\n", sum_day1);
    printf("please in put the second date\n");
    printf("year month date\n");
    scanf("%d%d%d", &date2.year,&date2.month,&date2.day);
    printf("compute the day of the year:");
    sum_day2 = day_of_year(date2.year , date2.month , date2.day);
    printf("second days :%d\n", sum_day2);
    day_between = abs(sum_day2 - sum_day1);
    printf("the number of days between two date is:%d\n", day_between);

}
int year_leap(int year)
{
    int flag;
    if (year%4==0&&year%100!=0||year%400==0)
        flag = 0;
    else
        flag = 1;
    return flag;
}
int day_of_year(int year, int month, int day)
{
    int i;
    int dayofmonth[2][13] =
    {
        {0,31,28,31,30,31,30,31,31,30,31,30,31},
        {0,31,29,31,30,31,30,31,31,30,31,30,31}
    };
    if (year_leap(year))
        for (i = 1; i<month; i++)
            day += dayofmonth[year_leap(year)][i] ;
        return day;
        
}
这个程序仅仅适用于计算同一年中两日期之间的天数,不适用于任意两个日期间的天数!
2012-06-08 21:08
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
收藏
得分:0 
回复 11楼 迷途的菜鸟
考虑到了哦,
在结果之前的for循环里面,已经把闰年加上去了……
2012-06-09 15:08
shendade
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-5-22
收藏
得分:0 
新手嘛,,不必要这样
2012-06-09 23:40
angela_gogo
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-6-9
收藏
得分:0 
int tianshu(int nian,int yue,int ri)
{
    int ts=ri,y;
    for(y=1;y<yue;y++)
    {
        if((y==1)||(y==3)||(y==5)||(y==7)||(y==8)||(y==10))
            ts+=31;
        if((y==4)||(y==6)||(y==9)||(y==11))
            ts+=30;
        if(y==2)
            {
                if(nian%4==0&&nian%100!=0||nian%400==0)
                    ts+=29;
                else
                    ts+=28;
            }
    }
    return ts;
}
countdays()
{
    int n1,y1,r1,n2,y2,r2,ts1,ts2,ts3=0,xgts,n,g=1;
    while(g)
    {
        ts1=0;
        ts2=0;
        ts3=0;
        xgts=0;
        printf("a before b\n");
        printf("put a's year:\n");
        scanf("%d",&n1);
        printf("put a's month:\n");
        scanf("%d",&y1);
        printf("put a's day:\n");
        scanf("%d",&r1);
        printf("put b's year:\n");
        scanf("%d",&n2);
        printf("put b's month:\n");
        scanf("%d",&y2);
        printf("put b's day:\n");
        scanf("%d",&r2);
        ts1=tianshu(n1,y1,r1);
        ts2=tianshu(n2,y2,r2);
        for(n=n1;n<n2;n++)
        {
            if(n%4==0&&n%100!=0||n%400==0)
                ts3+=366;
            else
                ts3+=365;
        }
        xgts=ts2+ts3-ts1;
        printf("a to b have %d day\n",xgts);
        printf("put 1 to continue.put 0 exit\n");
        scanf("%d",&g);
    }
}

这个碉堡了~
2012-06-09 23:50
wuyanyouqing
Rank: 2
等 级:论坛游民
帖 子:14
专家分:26
注 册:2011-4-17
收藏
得分:0 
这个程序不够严密!是有漏洞的,比如闰年7月1号,到第二年的1月1号,算的就是错误的。
2012-06-10 11:20
xunxun
Rank: 2
等 级:论坛游民
帖 子:6
专家分:17
注 册:2012-6-10
收藏
得分:0 
回复 5楼 S_Ringo
算法很清晰啊~~~
2012-06-10 17:13
快速回复:任意两天之间相隔的天数
数据加载中...
 
   



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

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