需要有关此代码如何工作的解释

时间:2019-03-29 12:47:33

标签: c

我在大学学习C,但我不理解我教授写的这段代码,也没有任何解释(我知道它将0到99的随机数添加到下一个数组元素,但不知道方式)

srandom(time(NULL));

for(i = 0; i < n; i++)
    a[i] = i == 0 ? random() % 100 : a[i-1] + random() % 100;

尽管它可以按预期工作,但我只想了解它如何在不带“ + =”或类似内容的情况下向下一个数组元素添加数字。

2 个答案:

答案 0 :(得分:6)

您可以这样重写它:

for(i=0;i<n;i++) {
    if (i == 0) {
        a[i] = random()%100;
    } else {
        a[i] = a[i-1] + random()%100;
    }
}

因此,您看到a[1]的值为a[0] + random()%100,依此类推。之所以需要if是因为当i为0时,您没有以前的值可以使用(a[-1]将是错误的)。三元运算符condition ? a : b可以理解为“如果条件为真,则为a;否则为b”。

答案 1 :(得分:1)

您可以通过以下方式查看它:

srandom(time(NULL));

for (i = 0; i < n; i++){
    if (i == 0){
        a[i] = random() % 100; // random number module 100 will give number between 0 and 99 inclusive
    }
    else{
        a[i] = a[i - 1] + random() % 100; // a[i] will get value equal to sum of previous array value a[i - 1] and new random number between 0 and 99
    }
}

在for循环中,您拥有i ++,它将索引增加1。