请问为什么不仅天数不对 还要多打一个数字才能运算啊??


#include
struct riqi
{
    int year;
    int month;
    int day;
};
int main()
{
    struct riqi a;
    printf("输入年月日\n");
    scanf("%d %d %d\n", &a.year, &a.month, &a.day);
    int sum;//总天数
    int i;
    sum = a.day;
    int b[13] = { 0, 31,28,31,30,31,30,31,31,30,31,30,31 };//平年每月天数
    for (i = 0; i < a.month; i++)
        sum+=b[i];
    if (a.year > 2 && ((a.year % 4 == 0 && a.year % 100 != 0) || a.year % 400 == 0))
        printf("是%d年的第%d天", a.year, sum);
    else
        printf("是%d年的第%d天", a.year, sum + 1);
    return 0;
}

img

scanf("%d %d %d\n", &a.year, &a.month, &a.day);中的\n删掉

if (a.month > 2 && ((a.year % 4 == 0 && a.year % 100 != 0) || a.year % 400 == 0))
printf("是%d年的第%d天", a.year, sum + 1);
else
printf("是%d年的第%d天", a.year, sum);