所以我有一個程序,我正在檢查如果年份是閏年,然後取決於如果它是一個飛躍或不,我會給(1-366) ..我得到了下面的代碼我工作到目前爲止,當我輸入一個非閏年,我得到一個正常的答案,但是當我輸入一個閏年,我得到displayDate(日)運行兩次,打印兩次,複製粘貼我的代碼,並嘗試爲自己,告訴我什麼是錯的,請..還有我是新的C所以慢慢來,如果它是很簡單的東西,請C程序打印兩次
int main()
{
int day ,month , year, LeapOrNot, date ;
printf("PLease enter a date in the following format Month/day/year: ");
scanf("%d/%d/%d" , &month , &day , &year);
LeapOrNot = isLeap(year);
switch (LeapOrNot)
{
case 1 :
switch (month)
{
case 1:
date = day;
break;
case 2:
date = 31 + day;
break;
case 3 :
date = 60 + day;
break;
case 4 :
date = 91 + day;
break;
case 5 :
date = 121 + day;
break;
case 6:
date = 152 + day;
break;
case 7:
date = 182 + day;
break;
case 8 :
date = 213 + day;
break;
case 9 :
date = 244 + day;
break;
case 10:
date = 274 + day;
break;
case 11 :
date = 305 + day;
break;
case 12 :
date = 335 + day;
break;
}
displayDate(date);
case 0 :
switch (month)
{
case 1:
date = day;
break;
case 2:
date = 31 + day;
break;
case 3 :
date = 59 + day;
break;
case 4 :
date = 90 + day;
break;
case 5 :
date = 120 + day;
break;
case 6:
date = 151 + day;
break;
case 7:
date = 181 + day;
break;
case 8 :
date = 212 + day;
break;
case 9 :
date = 243 + day;
break;
case 10:
date = 273 + day;
break;
case 11 :
date = 304 + day;
break;
case 12 :
date = 334 + day;
break;
}
displayDate(date);
}
}
int isLeap(int year)
{
int LeapOrNot;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 ==0)
LeapOrNot = 1 ;
else
LeapOrNot = 0 ;
return LeapOrNot;
}
int displayDate(int date)
{
printf("the day for that year is %d", date);
}
嘗試逐行調試程序中的代碼。該計劃足夠小,這是可行的。一旦你這樣做,你會發現問題在哪裏。 –
一個很好的習慣(因爲你是初學者)會增加一個'default'語句。 – TheDarkKnight
可以在'main()'後面實現'isLeap()'和'displayDate()'。爲了更好的代碼,你應該在'main()'之前插入前兩個的原型。 (原型是「函數聲明」,即函數的頭部用';;而不是主體)。我在開始時也缺少'#include'。 –
Scheff