给出一个字符串代表日期,问它是这一年的第几天

每次输入为一个字符串,字符串的格式为 YEAR/MM/DD,即 YEAR 年 MM 月 DD 日。要求输出这是一年的第几天。
希望偶多组数据。不知道要怎么处理输入结束

#include <stdio.h>

int monthday[] = { 0,                // (1) 
    31, 28, 31, 30, 31, 30,
    31, 31, 30, 31, 30, 31    
};
int sumday[13];
char str[100];
int y, m, d;

int main() {
    int i;
    while (scanf("%s", str) != EOF) {
        sscanf(str, "%4d/%2d/%2d", &y, &m, &d);
        if (y % 4 == 0 && y % 100 || y % 400 == 0) {
            monthday[2] = 29;        // (2)
        }
        else {
            monthday[2] = 28;
        }
        sumday[0] = 0;
        for (i = 1; i <= 12; ++i) {  // (3)
            sumday[i] = sumday[i - 1] + monthday[i];
        }
        int ans = sumday[m - 1] + d; // (4)
        printf("%d\n", ans);
    }
    return 0;
}
  • $(1)$ 数组monthday[i]存储的是平年的情况下,第 $i$ 个月的总天数;
  • $(2)$ 根据条件判断是闰年的情况下,2月的总天数变成 29;
  • $(3)$ 统计 $1$ 月到 $i$ 月的总天数存储在sumday[i]中;
  • $(4)$ 根据前面月份加上当前天数,计算总的天数;