这段代码有几个错误:
1. 没有加入break语句:在每个case后面,需要添加break语句以结束switch语句块,否则会继续执行后面的case。
2. 闰年判断条件错误:在判断是否为闰年的条件中,存在括号不匹配的问题。正确的条件应该是((year%400==0)||(year%4==0&&year%100!=0))。
3. 二月份的天数判断错误:在判断二月份的天数时,应该先判断是否为闰年,然后再根据闰年与非闰年分别判断天数。
下面是修改后的代码:++#include <stdio.h>int main() { int year, mon, day, days = 0; scanf("%d%d%d", &year, &mon, &day); if (year > 9999 || year < 1000) { printf("data error!"); } else { if (((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) && mon > 2) { days++; } switch (mon) { case 1: if (day > 31) { printf("data error!"); } else { days = day; printf("%d", days); } break; case 2: if (((year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) && day > 29) || ((year % 400 != 0 || (year % 4 != 0 && year % 100 == 0)) && day > 28)) { printf("data error!"); } else { days = day + 31; printf("%d", days); } break; case 3: if (day > 31) { printf("data error!"); } else { days = day + 59; printf("%d", days); } break; case 4: if (day > 30) { printf("data error!"); } else { days = day + 90; printf("%d", days); } break; case 5: if (day > 31) { printf("data error!"); } else { days = day + 120; printf("%d", days); } break; case 6: if (day > 30) { printf("data error!"); } else { days = day + 151; printf("%d", days); } break; case 7: if (day > 31) { printf("data error!"); } else { days = day + 181; printf("%d", days); } break; case 8: if (day > 31) { printf("data error!"); } else { days = day + 212; printf("%d", days); } break; case 9: if (day > 30) { printf("data error!"); } else { days = day + 243; printf("%d", days); } break; case 10: if (day > 31) { printf("data error!"); } else { days = day + 273; printf("%d", days); } break; case 11: if (day > 30) { printf("data error!"); } else { days = day + 304; printf("%d", days); } break; case 12: if (day > 31) { printf("data error!"); } else { days = day + 334; printf("%d", days); } break; default: printf("data error!"); } } return 0;}
希望以上回答对你有帮助!如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要! |