我在大学学习C,但我不理解我教授写的这段代码,也没有任何解释(我知道它将0到99的随机数添加到下一个数组元素,但不知道方式)
srandom(time(NULL));
for(i = 0; i < n; i++)
a[i] = i == 0 ? random() % 100 : a[i-1] + random() % 100;
尽管它可以按预期工作,但我只想了解它如何在不带“ + =”或类似内容的情况下向下一个数组元素添加数字。
答案 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。