|
发表于 2023-10-7 17:31:47
|
显示全部楼层
这段代码有几个错误:
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;
- }
复制代码
希望以上回答对你有帮助!如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!   |
|