Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Name: ZeroJudge a263: 日期差幾天
- Author: LinChuWen
- Date: 17/04/15
- Description: a program that counts days between two dates
- */
- #include <stdio.h>
- #include <stdlib.h>
- int monthLength();
- int testLeapYear();
- void arrangeOrder();
- void switchDate();
- int main(){
- int y1, m1, d1;
- int y2, m2, d2;
- int dayAmount;
- int cnt;
- while ( scanf("%d %d %d %d %d %d", &y1, &m1, &d1, &y2, &m2, &d2)!=EOF ){
- /* reset variable */
- dayAmount = 0;
- arrangeOrder( &y1, &m1, &d1, &y2, &m2, &d2 );
- /* count days between Date1 and Date2 */
- if ( y1 > y2 ){
- /* count days between y1 and y2 */
- for ( cnt=y2+1 ; cnt<y1 ; cnt++ )
- dayAmount += 365;
- /* count leap years between y1 and y2 */
- for ( cnt=y2-y2%4+4 ; cnt<y1 ; cnt+=4 )
- if ( testLeapYear(cnt) == 1 )
- dayAmount++;
- /* count days from the beginning of the year to Date1 */
- dayAmount += d1;
- for ( cnt=1 ; cnt<m1 ; cnt++ )
- dayAmount += monthLength( y1, cnt );
- /* count days from Date2 to the end of the year */
- dayAmount += monthLength( y2, m2 ) - d2;
- for ( cnt=m2+1 ; cnt<=12 ; cnt++ )
- dayAmount += monthLength( y2, cnt );
- } /* END if (y1>y2) */
- else if ( y1 == y2 ){
- if ( m1 > m2 ){
- /* count days between m1 and m2 */
- for ( cnt=m2+1 ; cnt<m1 ; cnt++ )
- dayAmount += monthLength( y1, cnt );
- dayAmount += monthLength( y2, m2 ) - d2;
- dayAmount += d1;
- } /* END if (m1>m2) */
- else if ( m1 == m2 ){
- if ( d1 > d2 )
- dayAmount = d1 - d2;
- else if ( d1 == d2 )
- dayAmount = 0;
- } /* END else if (m1=m2) */
- } /* END else if (y1=y2) */
- /* print out the answer, dayAmount */
- printf("%d\n", dayAmount);
- } /* END outer while */
- system("PAUSE");
- return 0;
- } /* END main()*/
- int testLeapYear( int year ){
- /* return 1 represented "true" (leap year) */
- /* return 0 represented "false" (common year) */
- if ( year%4 == 0 ){
- if ( year%100 == 0 ){
- if ( year%400 == 0 )
- return 1;
- else
- return 0;
- }
- else
- return 1;
- }
- else
- return 0;
- } /* END testLeapYear() */
- int monthLength( int year, int month ){
- int monthDays[12] = {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- if ( month == 2 ){
- if ( testLeapYear(year) == 1 )
- return 29;
- else
- return 28;
- }
- else
- return monthDays[--month];
- } /* END monthLength() */
- void switchDate( int *y1, int *m1, int *d1, int *y2, int *m2, int *d2 ){
- int reg;
- reg = *y1; *y1 = *y2; *y2 = reg;
- reg = *m1; *m1 = *m2; *m2 = reg;
- reg = *d1; *d1 = *d2; *d2 = reg;
- } /* END switchDate() */
- void arrangeOrder( int *y1, int *m1, int *d1, int *y2, int *m2, int *d2 ){
- if ( *y1 < *y2 )
- switchDate( y1, m1, d1, y2, m2, d2 );
- else if ( *y1 == *y2 )
- if ( *m1 < *m2 )
- switchDate( y1, m1, d1, y2, m2, d2 );
- else if ( *m1 == *m2 )
- if ( *d1 < *d2 )
- switchDate( y1, m1, d1, y2, m2, d2 );
- } /* END arrangeOrder() */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement