1

我正在尝试用特定的 i 值在 c 中创建一个 FOR 循环,例如 i=2,6,8,12,16,20,22,26,34 .. 我只是不知道如何指定增量,因为它们不相等。这段代码对我不好。

for (i=2,i<=30,i++) {

}

也许在 i 中使用指定的值数组,然后参考该数组运行 for 循环?

有什么帮助吗?

4

6 回答 6

6

您的for-loop 语法需要修复。

第一个选项是使用自定义函数:

 for (i=2; i <= 30; i = foo(i)) { ... }

wherefoo是一个获取当前值i并返回下一个值的函数。你需要对foo自己做出正确的定义。

另一种方法是将所有这些值放在一个数组中并将该数组用作索引:

 int indices[ MAX_INDICES ] = { 2, 6, ... };
 for (size_t j = 0; j < MAX_INDICES; ++j) { 
      /* instead of using 'j' use indices[ j ] now on */
 }
于 2012-06-11T11:53:22.787 回答
1

您要添加的数量似乎并不总是相同的。因此,我建议将值放入一个数组并使用索引循环遍历它。

伪代码:

int vals[10];

// fill the values
vals[0] = 2;
vals[1] = 6;
vals[2] = 8;
...
for(int i = 0; i < 10; ++i)
{
   // work
}
于 2012-06-11T11:52:05.030 回答
1

正确,您想将索引放入数组中:

static const int indices[] = { 2,6,8,12,16,20,22,26,34 };
for (int i = 0; i != sizeof(indices) / sizeof(indices[0]); ++i) {
    const int j = indices[i];
    ...
}
于 2012-06-11T11:53:27.137 回答
1

i 的值有什么模式吗?如果没有,并且您需要的可能值的数量足够小,则需要创建一个数组并遍历该数组,例如:

int myValue[9] = {2,6,8,12,16,20,22,26,34};
int i;
for(i=0; i < 9; i++)
{
    printf("myValue[%d] = %d\n", i, myValue[i]);
}
于 2012-06-11T12:04:15.403 回答
0

对于 2 的步骤,您可以像这样。对于 (i=2,i<=30,i+=2) {

}

于 2012-06-11T11:52:46.797 回答
0

确切的限制是什么?大多数情况下似乎增加了 4,但也有变化。

鉴于此,似乎最好的方法是将您需要的值放入一个数组并以这种方式使用它们,或者定义一个可以生成这些值然后以这种方式访问​​它们的函数(而不是通过您的值数组进行索引) )。

另外,请注意for-loop 内的部分由;not分隔,

于 2012-06-11T11:53:56.963 回答