我们如何在C编程中传递FOR循环中的多个初始化,条件和增量?

时间:2017-07-23 12:20:58

标签: c for-loop

为了搜索数组中的元素,我将大小为20的数组分成两部分。 a将从0-9搜索,b将从10-19搜索。但是这段代码不起作用。这有什么问题?

 for(  a=0,b=10; a<9,b<20 ; a++,b++ )
        {
            if(x[a]==n)m=a;break;
            if(x[b]==n)m=b;break;
            if(x[c]==n)m=c;break;
            if(x[d]==n)m=d;break;
        }

2 个答案:

答案 0 :(得分:4)

代码中的一个问题是for循环的条件。它应该是:

for (a = 0, b = 10; a < 9 && b < 20; a++, b++) { ... }

请注意&&a < 9之间的b < 20

您的for循环中也存在逻辑缺陷。实际上,对于循环的每次迭代,ab增加1.这意味着当a = 9时,a < 9将为false,并且for循环停止。但是,当a = 9,然后是b = 19时,您永远不会看x[19],因为循环已经结束。

我认为正确的条件是:a < 10 && b < 20

事实上,您并非真正需要ab。请看以下示例:

for (a = 0; a < 10; a++) {
    if (x[a] == n || x[a + 10] == n) {
        m = a;
        break;
    }
}

此外,如果if块中有多个语句,则必须将它们包含在{ ... }括号中。

// Incorrect
if (x[a] == n) m = a; break;

// Correct
if (x[a] == n) {
    m = a;
    break;
}

// Also correct
if (x[a] == n) { m = a; break; }

正如其他用户所指出的,你在循环中使用cd,但它们是什么?

答案 1 :(得分:0)

您的代码有很多错误,您可以尝试使用

 for(  a=0,b=10; a<10 && b<20 ; a++,b++ )//&& between conditions and a<10 otherwise 9th element will be skipped
        {
            if(x[a]==n)
             {
              m=a;break;//parenthesis used because it contains 2 statement
             }
            if(x[b]==n)
             {
              m=b;break;//parenthesis used because it contains 2 statement
             }
              //extra statements were removed
        }