#include<stdio.h> int main() {int a,b,c,d=0,sum=0,i; scanf("%d %d %d",&a,&b,&c); if(a%400==0||(a%4==0&&a%100!=0)) { d=1;} for(i=1;i<=b;i++) {{if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) sum+=31;}{ else if(i==4||i==6||i==9||i==11) sum+=30;}{ else if(i==2&&d==1) sum+=29;}{ else if(i==2&&d==0) sum+=28;}} sum+=c; printf("%d",sum); return 0; }这段代码问题出现在哪里并更正
时间: 2023-06-30 09:14:51 浏览: 198
#include <stdio.h>
4星 · 用户满意度95%
这段代码是一个计算日期的程序,但是代码中有一些问题:
1. 在第一个 if 语句中,如果满足条件,应该将变量 d 赋值为 1,但是代码中缺少了赋值操作,需要加上 d=1;
2. 在计算天数的 for 循环中,大括号的位置不正确,应该将所有的 if else 语句放在同一对大括号中,而不是分开成三个大括号;
3. 在计算天数的 for 循环中,当月份为 2 月时,闰年应该有 29 天,平年应该有 28 天。但是代码中将判断语句放在了同一个大括号中,导致只有最后一个 else if 语句会被执行,需要将每个判断语句独立出来。
下面是更正后的代码:
```c
#include <stdio.h>
int main() {
int a, b, c, d = 0, sum = 0, i;
scanf("%d %d %d", &a, &b, &c);
if (a % 400 == 0 || (a % 4 == 0 && a % 100 != 0)) {
d = 1;
}
for (i = 1; i <= b; i++) {
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {
sum += 31;
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
sum += 30;
} else if (i == 2 && d == 1) {
sum += 29;
} else if (i == 2 && d == 0) {
sum += 28;
}
}
sum += c;
printf("%d", sum);
return 0;
}
```
阅读全文