2026-09-12
subtotal.c
#include <stdio.h>
int main(void) {
int prices[6] = {3, 6, 9, 12, 15, 18};
int subtotal = 0;
for (int i = 0; i <= 4; i++) {
subtotal += prices[i];
}
printf("%d\n", subtotal);
return 0;
}
pricesは6要素ありますが、このループは本当に全部を合計しているでしょうか。実行すると何が出力されますか。
Answer
45です。ループはi = 0からi <= 4が真の間、つまり添字0・1・2・3・4の5要素だけ実行され、末尾のprices[5](18)には触れません。<=という境界の書き方が、配列全体ではなく「先頭5個まで」の部分和になっている原因です。3+6+9+12+15で45になります。