天天看點

用c語言程式設計你出生的天數,計算出生日到計算日的總天數

//我把我的代碼貼給你,你自己看看吧,這種算天數的,多半都是閏年閏月弄錯了

//我這個先輸入的日期不必比後輸的小

#include  

#include  

#define  YEAR  365

int   delta_T( int  year[], int month[], int day[] )

{

int   i, t, k, s,

m[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};

if( year[0] > year[1] )

{

t=year[0];  year[0]=year[1];   year[1]=t;

t=month[0]; month[0]=month[1]; month[1]=t;

t=day[0];   day[0] = day[1];   day[1]=t;

}

else

if( year[0]==year[1] && month[0]>month[1] )

{

t=year[0];  year[0]=year[1];   year[1]=t;

t=month[0]; month[0]=month[1]; month[1]=t;

t=day[0];   day[0] = day[1];   day[1]=t;

}

else

if( year[0]==year[1] && month[0]==month[1] )

return  day[0]>day[1] ? day[0]-day[1] : day[1]-day[0];        //當年月都相同時,函數直接傳回天數差

if( year[0]%400==0 || ( year[0]%4==0 && year[0]%100!=0 ) )

if( year[1]%400==0 || ( year[1]%4==0 && year[1]%100!=0 ) )

t = 2;                    //year[0]與year[1]都是閏年

else

t = 3;                    //year[0]是閏年,而year[1]不是

else

if( year[1]%400==0 || ( year[1]%4==0 && year[1]%100!=0 ) )

t = 4;                    //year[0]不是閏年,而year[1]是

else

t = 0;                    //year[0]和year[1]都不是閏年

s = day[1];

if( year[0] == year[1] )                                    //當兩年份相同時,則直接求

{

if( t == 2 )

for( i=month[0]; i

s += m[1][i-1];

else

for( i=month[0]; i

s += m[0][i-1];

s -= day[0];

}

else

{

if( t==2 || t==3 )

for( i=month[0]; i<13; i++ )

s += m[1][i-1];

else

for( i=month[0]; i<13; i++ )

s += m[0][i-1];

s -= day[0];

k = 0;                            //year[1]距year[0]有幾年

for( i=year[0]+1; i

{

k++;

if( i%400==0 || ( i%4==0 && i%100!=0 ) )            //計算閏年

s++;

}

s += k*YEAR;

for( i=1; i

s += m[0][i-1];

if( month[1] == 2  &&  day[1] == 29 )

s += 1;

if( month[1] > 2 )

if( t==2 || t==4 )

s += 1;

}

return  s;

}

int   main()

{

int   i, year[2], month[2], day[2], s;

for( i=0; i<2; i++ )

{

printf("\n請輸入如年月日(如:2011-1-1):");

scanf("%d-%d-%d", &year[i], &month[i], &day[i] );

}

s = delta_T( year, month, day );

printf("\n%d-%d-%d 與 %d-%d-%d 相隔%d天", year[0], month[0], day[0], year[1], month[1], day[1], s );

getch();

return  0;

}

用c語言程式設計你出生的天數,計算出生日到計算日的總天數

沒有做不到