使用 while(leap==1) 和 while(leap==0) 並配合 break,實際上等同於 if-else,但邏輯冗餘且易出錯。
int calculatedDays(int year, int month, int day) {
int leap = 0, totaldays = 0;
if ((year%4==0 && year%100!=0) || (year%400==0)) leap = 1;
if (leap) { // 閏年
switch(month) {
case 12: totaldays += 30;
case 11: totaldays += 31;
case 10: totaldays += 30;
case 9: totaldays += 31;
case 8: totaldays += 31;
case 7: totaldays += 30;
case 6: totaldays += 31;
case 5: totaldays += 30;
case 4: totaldays += 31;
case 3: totaldays += 29;
case 2: totaldays += 31;
case 1: totaldays += day; break;
}
} else { // 平年
switch(month) {
case 12: totaldays += 30;
case 11: totaldays += 31;
case 10: totaldays += 30;
case 9: totaldays += 31;
case 8: totaldays += 31;
case 7: totaldays += 30;
case 6: totaldays += 31;
case 5: totaldays += 30;
case 4: totaldays += 31;
case 3: totaldays += 28;
case 2: totaldays += 31;
case 1: totaldays += day; break;
}
}
printf("該日是該年的第:%d天\n", totaldays);
return totaldays;
}
switch。