當前位置:編程學習大全網 - 編程語言 - c語言高手進。 幫我編程下 。 小弟感激不盡~

c語言高手進。 幫我編程下 。 小弟感激不盡~

#include<stdio.h>

int main(void)

{

int yearB=0, monthB=0, dayB=0;

int yearE=0, monthE=0, dayE=0;

int difYear, difMonth;

// 輸入日期1

printf("Input the beginning date(yyyy.mm.dd)\n");

scanf("%d.%d.%d", &yearB, &monthB, &dayB);

// printf( "%d.%d.%d\n", yearB, monthB, dayB); 這行是我測試用的,甭管

// 檢驗日期1的合法性

switch(monthB)

{

case 2:

if( dayB<=0 || dayB>29 )

{

printf("Illegal date. exiting...");

exit(1);

}

else if( dayB==29 && !((yearB%4==0&&yearB%100!=0)||yearB%400==0) )

{

printf("Illegal date. Exiting...");

exit(1);

}

break;

case 4:

case 6:

case 9:

case 11:

if( dayB<=0 || dayB>30 )

{

printf("Illegal date. Exiting...");

exit(1);

}

break;

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

if( dayB<=0 || dayB>31 )

{

printf("Illegal date. Exiting...");

exit(1);

}

break;

default:

printf("Illegal date. Exiting...");

exit(1);

break;

}

// 輸入日期2

printf("Input the end date(yyyy.mm.dd)\n");

scanf("%d.%d.%d",&yearE,&monthE,&dayE);

// printf("%d.%d.%d\n", yearE, monthE, dayE); 甭管

// 檢驗日期2的合法性

switch(monthE)

{

case 2:

if( dayE<=0 || dayE>29 )

{

printf("Illegal date. Exiting...");

exit(1);

}

else if( dayE==29 && !((yearE%4==0&&yearE%100!=0)||yearE%400==0) )

{

printf("Illegal date. Exiting...");

exit(1);

}

break;

case 4:

case 6:

case 9:

case 11:

if( dayE<=0 || dayE>30 )

{

printf("Illegal date. Exiting...");

exit(1);

}

break;

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

if( dayE<=0 || dayE>31 )

{

printf("Illegal date. Exiting...");

exit(1);

}

break;

default:

printf("Illegal date. Exiting...");

exit(1);

break;

}

// 檢驗日期1是否在日期2之前

if(

(yearB>yearE)

|| ((yearB==yearE)&&(monthB>monthE))

|| ((yearB==yearE)&&(monthB==monthE)&&(dayB>dayE))

)

{

printf("Error! Beginning date is later than end date. Exiting...\n");

exit(1);

}

// 相隔年數

if(monthE>monthB || (monthE==monthB&&judge_lastDay(yearE,monthE,dayE)) )

{

difYear = yearE-yearB;

}

else

{

difYear = yearE-yearB-1;

}

// 相隔完整月數

if( judge_lastDay(yearE, monthE, dayE) )

{

difMonth = (monthE-monthB+12)%12;

}

else

{

difMonth = (monthE-monthB+11)%12;

}

// 輸出

printf( "There are %d year(s) and %d month(s) from beginning date to end date.\n", difYear, difMonth );

}

// 月末日期判斷函數

int judge_lastDay( int year, int month, int day )

{

switch(day)

{

case 28:

if( month==2 && !((year%4==0&&year%100!=0)||year%400==0) )

return 1;

break;

case 29:

if(month==2 && ((year%4==0&&year%100!=0)||year%400==0))

return 1;

break;

case 30:

if( month==4||month==6||month==9||month==11)

return 1;

break;

case 31:

if( month==1||month==3||month==5||month==7||month==8||month==10||month==12)

return 1;

break;

default:

return 0;

}

return 0;

}

  • 上一篇:什麽是精密加工?
  • 下一篇:心理學細節描述的句子
  • copyright 2024編程學習大全網