| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2301 人关注过本帖
标题:如何实现任意输入一个年月日,计算该日期到2000.1.1中间有多少天。。
只看楼主 加入收藏
lixiaoyao776
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-10-27
结帖率:80%
收藏
已结贴  问题点数:24 回复次数:5 
如何实现任意输入一个年月日,计算该日期到2000.1.1中间有多少天。。
我想了好久,还是觉得很奇怪啊,中间要考虑闰年什么的。。。有木有比较简单的方法啊,新手求解。。
搜索更多相关主题的帖子: 如何 年月日 计算 多少 
2012-10-30 13:05
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:24 
只能是所有情况都考虑 闰年 每个月的天数
参考一下 也许能帮到你
#include<stdio.h>
int year,month,day;
int isyear(int year)
{
    if(year%4==0&&year%100!=0||year%400==0)
        return 1;
    else
        return 0;
}
int main()
{
    int i,res;
    int data=0;
    while(scanf("%d.%d.%d",&year,&month,&day)!=EOF)
    {
        data=day;
        month-=1;
        switch(month)
        {
            case 11:data+=30;
            case 10:data+=31;
            case 9:data+=30;
            case 8:data+=31;
            case 7:data+=31;
            case 6:data+=30;
            case 5:data+=31;
            case 4:data+=30;
            case 3:data+=31;
            case 2:if(isyear(year))
                      data+=29;
                    else
                      data+=28;
            case 1:data+=31;
        }
        if(year>2000)
        {
            res=year;
            i=2000;
        }
        else
        {
            res=2000;
            i=year;
        }
        for(i;i<res;i++)
        {
            if(isyear(year))
                data+=366;
            else
                data+=365;
        }
        
        printf("%d\n",data);     
    }
    return 0;
}


[ 本帖最后由 zxd543 于 2012-10-30 17:00 编辑 ]

马马虎虎 不吝赐教 我是路过蹭分滴
2012-10-30 16:35
lixiaoyao776
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-10-27
收藏
得分:0 
回复 2楼 zxd543
为什么输入2000年的日期,算出来的都是0啊??
2012-10-30 18:47
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:0 
回复 3楼 lixiaoyao776
你怎么输入的?
2000.5.2
我这怎么不是0?
while(scanf("%d.%d.%d",&year,&month,&day)!=EOF)//用.分隔


[ 本帖最后由 zxd543 于 2012-10-30 19:21 编辑 ]

马马虎虎 不吝赐教 我是路过蹭分滴
2012-10-30 19:18
lixiaoyao776
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-10-27
收藏
得分:0 
回复 4楼 zxd543
好了。可以告诉我你的QQ吗,我还有点不懂的,想向你请教下。。。156296038
2012-10-30 19:36
龙航四海
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:102
注 册:2012-10-17
收藏
得分:0 
#include <stdio.h>
#include<math.h>
main()
{
    int num,leap,n,m,sum1=0,sum2=0,i,year,month,day;
    int a[2][12]={{31,29,31,30,31,30,31,31,30,31,31,30},{31,28,31,30,31,30,31,31,30,31,31,30}};
    printf("请输入年月日:");
    scanf("%5d%3d%3d",&year,&month,&day);
    leap=year%4==0&&year%100!=0||year%400==0;
    for(i=1;i<month;i++)
        day=day+a[leap][i];
    m=year-2000;
    n=m/4;
    for(i=0;i<12;i++)
    {
        sum1=sum1+a[0][i];
        sum2=sum2+a[1][i];
    }
    num=n*sum2+(m-n)*sum1+day-1;
    printf("距2000年1月1日的天数为:");
    printf("%5d\n",num);
}
你再看看这个程序吧,还算简略!

[ 本帖最后由 龙航四海 于 2012-10-30 22:14 编辑 ]
2012-10-30 22:05
快速回复:如何实现任意输入一个年月日,计算该日期到2000.1.1中间有多少天。。
数据加载中...
 
   



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

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