| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3114 人关注过本帖
标题:任意两天之间相隔的天数
只看楼主 加入收藏
shendade
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-5-22
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:16 
任意两天之间相隔的天数
对这个问题,我想先把月份表示出来再加,,但考虑到平年闰年,还得嵌套,,该怎么办呢??
谁能给个更好的思路
搜索更多相关主题的帖子: 怎么办 
2012-06-07 22:26
shendade
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-5-22
收藏
得分:0 
#include <stdio.h>

 void main()
{
    printf("please input the date(including the month, the day and the year\n");
    int a,b,c,sum;
    scanf("%d %d %d",&a,&b,&c);
    if(b<=31)
    {
            if((c%400==0)||(c%4==0&&c%100!=0))
            {  switch(a)
                {
                case 1:sum=b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 2:sum=31+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 3:sum=31+29+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 4:sum=31+29+31+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 5:sum=31+29+31+30+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 6:sum=31+28+31+30+31+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 7:sum=31+29+31+30+31+30+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 8:sum=31+29+31+30+31+30+31+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 9:sum=31+29+31+30+31+30+31+31+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 10:sum=31+29+31+30+31+30+31+31+30+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 11:sum=31+29+31+30+31+30+31+31+30+30+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 12:sum=31+29+31+30+31+30+31+31+30+30+30+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                default: printf("the date you input is wrong\n");

                }
            
            }
            else
                switch(a)
                    {
                case 1:sum=b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 2:sum=31+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 3:sum=31+28+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 4:sum=31+28+31+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 5:sum=31+28+31+30+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 6:sum=31+28+31+30+31+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 7:sum=31+28+31+30+31+30+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 8:sum=31+28+31+30+31+30+31+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 9:sum=31+28+31+30+31+30+31+31+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 10:sum=31+28+31+30+31+30+31+31+30+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 11:sum=31+28+31+30+31+30+31+31+30+30+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                case 12:sum=31+28+31+30+31+30+31+31+30+30+30+b;printf("输入的日期为%d的年的第%d天",c,sum);break;
                default: printf("the date you input is wrong\n");
                    }

               

    }
    else  printf("the date you input is wrong\n");

 }
2012-06-07 23:30
shendade
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-5-22
收藏
得分:0 
只要这样表示出了某天是一年中第几天  一切就解决了。但是我感觉不够简洁.可有更好的方法??
2012-06-07 23:32
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
我晕!
定义个数组mouth[12]={31,28,31,…}\\12个月天数2月28天
for……

if……//判断是否闰年对二月重新赋值!
//再算天数!!!

Stay hungry , Stay foolish!
2012-06-08 00:57
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
int Leap(int year)//判断是否闰年,是返回1,不是返回0;
{
    if((year%100!=0)&&(year%4==0)||(year%400==0))
    {
        return(1);
    }
    else
    {
        return(0);
    }
}
int DateOfYear(int year,int month,int day)//输入年月日,计算该日是该年的第几天;
{
    int EveryYear[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int sum=0,i;
    if(Leap(year))
    {
        EveryYear[1]++;
    }
    for(i=1;i<month;i++)
    {
        sum=sum+EveryYear[i-1];
    }
    sum=sum+day;
    return(sum);
}
int CountYear(long date)//从输入格式中得出年的数值;
{
    int n=0;
    date=(date-date%10000)/10000;
    n=(int)date;
    return(n);
}
int CountMonth(long date)//从输入格式中得出月的数值;
{
    int m=0;
    date=date%10000;
    date=(date-date%100)/100;
    m=(int)date;
    return(m);
}
int CountDay(long date)//从输入格式中得出日的数值;
{
    int d=0;
    date=date%100;
    d=(int)date;
    return(d);
}
int main()
{
    long date1=0,date2=0,t=0;
    int year1=0,year2=0,month1=0,month2=0,day1=0,day2=0,lastnum=0;
    int i;
    printf("请输入第一个年月日,按照20120424的格式\n");//按此格式输入,可以省去分别比较年、月、日的开销;
    scanf("%ld",&date1);
    printf("请输入第二个年月日,按照20120424的格式\n");
    scanf("%ld",&date2);
    if(date1>date2)//为计算方便,始终将大数放在date2中;
    {
        t=date1;
        date1=date2;
        date2=t;
    }
    year1=CountYear(date1);
    month1=CountMonth(date1);
    day1=CountDay(date1);
    year2=CountYear(date2);
    month2=CountMonth(date2);
    day2=CountDay(date2);
    for(i=year1;i<year2;i++)
    {
        if(Leap(i))
        {
            lastnum++;
        }
    }
    lastnum=lastnum+365*(year2-year1)-DateOfYear(year1,month1,day1)+DateOfYear(year2,month2,day2);
    printf("两个日期之间相隔%d天\n",lastnum);
    system("pause");
    return(0);
}
2012-06-08 08:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 4楼 清微御宇
有进步的嘛,

授人以渔,不授人以鱼。
2012-06-08 16:33
迷途的菜鸟
Rank: 2
等 级:论坛游民
帖 子:36
专家分:50
注 册:2012-3-20
收藏
得分:0 
是否闰年
然后天数
再然后相减
话好说,实现起来要一会
2012-06-08 19:42
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
任意两天之间相隔的天数

公元1893年12月26日 到 公元1976年9月9日 总共有多少天?
这个算不算任意两天?

大家帮算下。


[ 本帖最后由 有容就大 于 2012-6-8 20:01 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-06-08 19:49
wp303410935
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2012-6-2
收藏
得分:0 
..
2012-06-08 21:00
迷途的菜鸟
Rank: 2
等 级:论坛游民
帖 子:36
专家分:50
注 册:2012-3-20
收藏
得分:0 
回复 5楼 S_Ringo
好严密啊,膜拜
2012-06-08 21:02
快速回复:任意两天之间相隔的天数
数据加载中...
 
   



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

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