这本书要求我回答''您对以下计划的期望是什么?''
多次阅读后,我似乎并不完全理解其内在运作。
从我得到的:
到底发生了什么? j从0开始,我也是,因此数字[j] + =数字[i]等于2?
此操作完成后会发生什么?
如果i和j等于0,那么为什么这个条件i<是真的吗?
int main (void)
{
int numbers[10] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int i, j;
for ( j = 0; j < 10; ++j )
for ( i = 0; i < j; ++i )
numbers[j] += numbers[i];
for ( j = 0; j < 10; ++j )
printf ("%i ", numbers[j]);
printf ("\n");
return 0;
}
答案 0 :(得分:6)
你要注意的第一件事是你有外循环,从0到10,你到数字[j]。这表示您采用每个元素并以某种方式对其进行修改。为了找到如何通过检查赋值的第二个循环和右侧,您可以注意到它将所有索引小于j的元素添加到数字[j]。现在让我们看看会在几个步骤中发生什么:
j = 0 : 1 0 0 0 0 0 0 0 0 0
j = 1 : 1 1 0 0 0 0 0 0 0 0
j = 2 : 1 1 2 0 0 0 0 0 0 0
j = 3 : 1 1 2 4 0 0 0 0 0 0
j = 4 : 1 1 2 4 8 0 0 0 0 0
最后,您将得到一个数组,其属性为每个元素a [j]等于[0] + a [1] + ... + a [j]和[0] = 1
现在,仔细看看过程的开始,你有j = 0和i = 0.第二个for循环运行只要i&lt;学家由于此比较为false,因此不执行循环,我们将转到外循环的下一次迭代,j = 1。