将事物总结为数组的程序

时间:2015-10-22 02:56:35

标签: c arrays

这本书要求我回答''您对以下计划的期望是什么?''

多次阅读后,我似乎并不完全理解其内在运作。

从我得到的:

  1. First For循环确定此过程将重复10次。变量j被指定为从0开始。
  2. 第二个for循环在0处开始变量i并且建立条件i< j并在其后写入操作。
  3. 到底发生了什么? 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;
    }
    

1 个答案:

答案 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。