/*------------------------------------------------------- 【程序改错】 --------------------------------------------------------- 功能:输入某年某月某日,判断这一天是这一年的第几天? -------------------------------------------------------*/ #include "stdio.h" main() { int day,month,year,sum,leap; printf("\nplease input year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); switch(month) { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; /***********FILL***********/ case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break; } /***********FILL***********/ _____; /***********FILL***********/ if(year%400==0||(year%4==0&&year%100!=0)) leap=1; else leap=0; /***********FILL***********/ if(leap==1 && month>2) sum++; printf("It is the %dth day.",sum); }
时间: 2023-07-07 08:43:41 浏览: 252
这段代码存在以下问题:
1. 缺少头文件声明,需要添加 `#include <stdio.h>`。
2. `main()` 函数的返回类型应该是 `int`,而不是 `void`。
3. `switch` 语句中缺少对月份为 4、5、6、7、8、9、10、11、12 的处理,需要在相应的 `case` 语句中添加对应的日期。
4. 在计算天数之前,应该先将 `sum` 的初值设为 0。
5. 在计算天数时,应该加上 `day-1`。
6. 在判断闰年时,应该先判断能否被 400 整除,再判断能否被 4 整除但不能被 100 整除。
修改后的代码如下:
```c
#include <stdio.h>
int main() {
int day, month, year, sum = 0, leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d", &year, &month, &day);
switch (month) {
case 1: sum = 0; break;
case 2: sum = 31; break;
case 3: sum = 59; break;
case 4: sum = 90; break;
case 5: sum = 120; break;
case 6: sum = 151; break;
case 7: sum = 181; break;
case 8: sum = 212; break;
case 9: sum = 243; break;
case 10: sum = 273; break;
case 11: sum = 304; break;
case 12: sum = 334; break;
default: printf("data error"); break;
}
sum += day - 1;
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
leap = 1;
else
leap = 0;
if (leap == 1 && month > 2)
sum++;
printf("It is the %dth day.", sum);
return 0;
}
```
阅读全文