私は今年の閏年かどうかを調べる作業をしています。閏年であるかどうかによって、(1-366)私はうるう年を入力するとdisplayDate(日)が2回実行され、2回印刷されますが、コピー、それは非常に単純なものであればそうCプログラムの印刷を2回実行する
それが簡単にしてください取る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