| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 747 人关注过本帖
标题:求指点 求两个日期之间的天数,输出有误,自己是在是找不出了
只看楼主 加入收藏
lioulang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-2-25
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:11 
求指点 求两个日期之间的天数,输出有误,自己是在是找不出了
# include "stdio.h"

int main()
{
int g[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int a,b,c,d,e,f,sum=0,i;

scanf("%d %d %d",&a,&b,&c);//日期1


scanf("%d %d %d",&d,&e,&f);//日期2


for(i=a+1;i<d;i++)
{
    if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
        sum=sum+366;
    else
        sum=sum+365;
}//整年日数

for(i=b+1;i<13;i++)
{
    sum=sum+g[i];
}

  if(b=1)
    if(a%4==0&&a%100!=0||a%400==0)
           sum++;//日期1这一年的整月天数



for(i=1;i<e;i++)
{
    sum=sum+g[i];
}
    if(e>2)
      if(d%4==0&&d%100!=0||d%400==0)
          sum++;//日期2这一年的整月天数

if(a%4==0&&a%100!=0||a%400==0)
g[2]=29;
sum=g[b]-c+sum+f;
printf("%d\n",sum);//加上'日'的天数
}
   网上答案:http://
搜索更多相关主题的帖子: include 
2012-03-08 16:35
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:5 
闰年呢?
2012-03-08 16:37
lioulang
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-2-25
收藏
得分:0 
有判断了啊
2012-03-08 16:39
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
输入2000 1 1 2000 1 2 输出 367
输入2000 1 1 2001 1 2 输出 366

你应该能找出哪里错了吧
2012-03-08 16:46
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:5 
奥运倒计时
时间限制:1000 ms  |  内存限制:65536 KB
描述
距离2008年8月8日,北京奥运会开幕的日子越来越近了,我们迫不及待的等待这一天的来临。现在就请你来求某日期离奥运会开幕还有多少天。

输入
测试数据包含多组输入。 每组输入一行,格式为yyyy-mm-dd,yyyy表示年份,mm表示月份,dd表示日数。输入以0000-00-00结束。

输出
每组输出一行,仅包含一个整数d,即距离奥运会开幕的天数,如果奥运会已经开始或者结束,都输出-1。奥运会开幕当天输出0。

样例输入
2008-08-01
2008-08-08
2007-08-08
2009-03-17
0000-00-00
样例输出
7
0
366
-1


http://www.
程序代码:
#include <stdio.h>
#include <stdlib.h>
int ping[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int run[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
bool Run(int year)
{
    if(year%4 == 0 && year%100 != 0 || year%400 == 0)
        return true;
    return false;
}
int main()
{
    int i,year,month,day;
    int dy,dm;
    char a[11];
    while(gets(a))
    {
        a[4] = 0;year = atoi(a);
        a[7] = 0;month = atoi(a+5);
        day = atoi(a+8);
        if(!(year+month+day))break;
        if(year>2008 || (year==2008 && month>8) || (year==2008 && month==8 && day>8))
        {
            printf("-1\n");
            continue;
        }
        for(dy=0,i = year;i<2008;i++)dy+=Run(i)?366:365;
        if(Run(year))
        {           
            for(i = 1,dm = 0;i<month;i++)dm += run[i];
            dm += day;
        }
        else
        {
            for(i = 1,dm = 0;i<month;i++)dm += ping[i];
            dm += day;
        }
        if(year<2008)dy -= dm;
        printf("%d\n",year==2008?221-dm:dy+221);
    }
    return 0;
}


                                         
===========深入<----------------->浅出============
2012-03-08 16:56
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:5 
刚写的
程序代码:
#include <stdio.h>
int leap(int year)
{    
    if(year%4==0&&year%100!=0||year%400==0)
    return 1;
    else 
    return 0;
}

int state(int y1,int m1,int d1,int y2,int m2,int d2)
{
    int i,day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    long sum=0;
    for(i=y1+1;i<y2;i++)
        sum+=365;          //相隔年份的天数

    for(i=m1+1;i<13;i++)
        sum+=day[i];
    sum+=(day[m1]-d1);      //起始年余下的天数

    for(i=0;i<m2;i++)
        sum+=day[i];
    sum+=d2;              //结束年所需计算的天数

    if(leap(y1)&&m1<=2) 
        sum++;
    for(i=y1+1;i<y2;i++)
    {
        if(leap(i))
            sum++;
    }
    if(leap(y2)&&m2>2)
        sum++;
    return sum;
}

main()
{
    int year1,year2,month1,month2,day1,day2,sum,a=1,b=1;
    int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    
    while(a)
    {
        printf("请输入计算起始的年月日:\n");
        scanf("%d%d%d",&year1,&month1,&day1);//日期1
        if(year1<0||month1<0||month1>12||day1<0||day1>day[month1])
            printf("输入错误!!!!\n");
        else a=0;
    }
    
    while(b)
    {
        printf("请输入计算结束的年月日:\n");
        scanf("%d%d%d",&year2,&month2,&day2);//日期2
        if(year2<0||month2<0||month2>12||day2<0||day2>day[month2])
            printf("输入错误!!!!\n");
        else b=0;
    }
    
    if((year1<year2)||(year1==year2&&month1<month2)||(year1==year2&&month1==month2&&day1<=day2))
    {
        sum=state(year1,month1,day1,year2,month2,day2);
        printf("相差 %d 天",sum);
    }
    
    else 
    {
        sum=state(year2,month2,day2,year1,month1,day1);
        printf("相差 -%d 天",sum);
    }
}
2012-03-08 17:42
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 6楼 luchar
去上面的网址测试下

                                         
===========深入<----------------->浅出============
2012-03-08 19:08
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:0 
回复 7楼 laoyang103
我测试过的啊,
2012-03-08 19:34
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 8楼 luchar
我说是按照那个题目的格式 提交以下你的代码

不是让你手动输入几个数据就完事  在浏览器上打开上面的网址、

接下来你就都懂了

                                         
===========深入<----------------->浅出============
2012-03-08 20:08
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:0 
哦,照着网上那个题目的要求,我写的确实不行的,呵呵
2012-03-08 22:12
快速回复:求指点 求两个日期之间的天数,输出有误,自己是在是找不出了
数据加载中...
 
   



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

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