#include<stdio.h> #include<math.h> int sum (int year,int month ,int day) {int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int totalday=0; for(int i=0;i<month-1;i++) {totalday+= a[i];} totalday+=day; if(month>2&&((year%4==0&&year%100!=0)||year%400==0)) {totalday+=1;} return totalday; } int main() { int year, month, day; printf("year,month,day:"); scanf("%d,%d,%d",&year,&month,&day); printf("第%d天\n",sum); }
时间: 2024-02-01 18:03:07 浏览: 137
#include <stdio.h>
这段代码有一些问题。
首先,在 `main` 函数中调用 `sum` 函数时,没有传入参数,应该将 `sum` 函数的调用改为 `sum(year, month, day)` 才能正确计算天数。
其次,在 `sum` 函数中判断闰年的条件有误,应该是 `(year % 4 == 0 && year % 100 != 0) || year % 400 == 0` 才能正确判断闰年。
最后,应该在程序开头定义函数 `sum` 的原型,否则会出现编译警告。
改正后的代码如下:
```c
#include <stdio.h>
#include <math.h>
int sum(int year, int month, int day);
int main() {
int year, month, day;
printf("year,month,day:");
scanf("%d,%d,%d", &year, &month, &day);
printf("第%d天\n", sum(year, month, day));
return 0;
}
int sum(int year, int month, int day) {
int a[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int totalday = 0;
for (int i = 0; i < month - 1; i++) {
totalday += a[i];
}
totalday += day;
if (month > 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) {
totalday += 1;
}
return totalday;
}
```
使用示例:
```
year,month,day:2021,7,1
第182天
```
阅读全文