~~~cpp
if (((x % 100 != 0) && (x % 4 == 0)) || (x % 400 == 0))
{
arr[i] = { x };
sum++;
i++;
}
~~~
这里
因为在记录操作后才进行i++,那么i的值一定是记录总数+1
所以最后一段输出时会输出一个空值(0)
by fzy1026 @ 2023-10-31 17:49:16
第 19 行,
改成 `for (int i = 0; i < j; i++)` 就行了。
因为数组下标是从 $0$ 开始的。
by wzj0829 @ 2023-10-31 17:49:21
@[XTTian](/user/1165215)
再唠一句,如果你想从下标 $0$ 循环 $n$ 次,
那么就是 `for (int i = 0; i < n; i++)`
~~求关~~
by wzj0829 @ 2023-10-31 17:51:35
@[XTTian](/user/1165215) 举例来说,假设一共有4个闰年
那么arr[4]记录的便是最后一个闰年的年份,并且在记录完后i++,i=5
而在最后遍历输出时,i最大会取到5(因为j=i=5),也就是输出arr[5].
但是arr[5]里面并没有存数并且已经初始化为0了,所以会输出0
by fzy1026 @ 2023-10-31 17:51:42
@[wzj0829](/user/1028403) 正确的
by fzy1026 @ 2023-10-31 17:52:45