求兩日期之間的相隔天數(year,month,day) C語言代碼

phpw34 9年前發布 | 1K 次閱讀 C/C++

    #include<cstdio>
int isRunNian(int year);
int DiJiTian(int year,int month,int day);
void swap(int a,int b);
int main()
{
int year1,month1,day1;
int year2,month2,day2;
int sum=0;
scanf("%d%d%d",&year1,&month1,&day1);
scanf("%d%d%d",&year2,&month2,&day2);
if(year1==year2)
{
sum = DiJiTian(year1,month1,day1) - DiJiTian(year2,month2,day2);
if(sum<0)
sum=-sum;
}
else
{
if(year1 > year2)
{
swap(&year1,&year2);
swap(&month1,&month2);
swap(&day1,&day2);
}
int a,b,c;
if(isRunNian(year1))
a=366-DiJiTian(year1,month1,day1);
else
a=365-DiJiTian(year1,month1,day1);

        b=0;  
        int i;  
        for(i=year1+1;i<year2;i++)  
        {  
            if(isRunNian(i))  
                b+=366;  
            else  
                b+=365;  
        }  

        c=DiJiTian(year2,month2,day2);  

        sum=a+b+c;  
    }  

    printf("%d\n",sum);  
    return 0;  
}  



/*判斷閏年的函數*/  
int isRunNian(int year)  
{  
    if(year%400==0||(year%4==0&&year%100!=0))  
        return 1;  
    else  
        return 0;  
}   

/*判斷這一天是這一年的第幾天函數*/  
int DiJiTian(int year,int month,int day)  
{  
    int i,sum=0;  
    for(i=1;i<month;i++)//step1  
    {  
        if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)  
            sum+=31;  
        else if(i==4||i==6||i==9||i==11)  
            sum+=30;  
        else if(i==2)  
        {  
            if(isRunNian(year))  
                sum+=29;  
            else  
                sum+=28;  
        }  
    }  
    sum+=day;//step2  
    return sum;//step3  
}  

/* 交換兩個變量的值的函數 */  
void swap(int *a,int *b)  
{  
    int c;  
    c=*a;  
    *a=*b;  
    *b=c;  
}   </pre> 


 本文由用戶 phpw34 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!