int a[SIZE]={0};
while(i==1) a[i]=1; // i 未初始化,條件極難成立
for(i=2; i<=SIZE; ++i) { // 數組越界:a[SIZE] 超出範圍
a[i]=2*(a[i-1]+1);
}
i 未初始化,while(i==1) 行為不確定。i==SIZE 訪問 a[SIZE] 越界。a[n] = 2*(a[n-1]+1)。#include
#define SIZE 11 // 需存 a[1]..a[10],故 SIZE=11
int main() {
int i;
int a[SIZE] = {0};
a[1] = 1; // 第 1 天早上剩 1 個
for (i = 2; i < SIZE; ++i) { // i < SIZE 避免越界
a[i] = 2 * (a[i-1] + 1); // 逆推前一天早上數量
printf("a[%d]=%d\n", i, a[i]);
}
return 0;
}
第 10 天早上(輸入樣例隱含 n=10)應為 1534 個,程式輸出 a[10]=1534 符合預期。