if()语句的参数不同

时间:2012-05-12 11:33:11

标签: c if-statement conditional-statements varying

我遇到如下问题: 我有一个数组(比如说)a [] = {10,24,56,33,22,11,21} 我有类似的东西

for(i=0;i<100;i++){
    if(a[i]==10)
        // do something
}

接下来当i = 1

if(a[i]==10 && a[i+1]==24)

所以在每次迭代时,if中的参数/条件应该是变化的 现在这将是一个非常大的序列,我无法明确写出 if(a[i]==10 && a[i+1]==24 && a[i+2]==56 ...... a[i+100]=2322)

我怎样才能实现这种变化的条件?

5 个答案:

答案 0 :(得分:1)

在循环中有一个循环:

for (i = 0; i != 100; ++i)
{
    int condition = 1;
    for (j = 0; i + j != 100 && condition; ++j)
    {
        condition = condition && (a[i + j] == /* your number */ );
    }
    if (condition) { /* ... */ }
}

答案 1 :(得分:1)

我认为你应该引入一个布尔值。

bool valid = true;

for(i=0;i<100;i++){
    if(a[i]==10 && valid)
        // do something
    else
    {
        valid = false;
        break;
    }
}

对于每次迭代,您需要更改要比较的值a[i]

答案 2 :(得分:1)

你必须有一个累积的“布尔”变量,它在第i次迭代中检查[i]并更新该变量:

int a[] = {...};   /* array with some values to verify */
int v[] = {...};   /* these are the actual desired values in a[] */

/* the verifying loop */
int i;
int cond = 1;
for (i = 0; i < 100; i++)
{
    cond = cond && (a[i] == v[i]);
    if (cond)
    {
       /* do something */
    }
}

答案 3 :(得分:0)

在这种情况下,您可以使用函数指针或块。  你可以在这里找到一个很好的例子here

答案 4 :(得分:0)

看到你的例子,我认为你所讨论的变化只是在数组'a'的长度,你要在某个数组x中检查它的存在。如果确实如此,memcmp对您有用。

让我稍微修改你的例子,以澄清我在说什么。

int a [7] = {10,24,56,33,22,11,21}是你要在某个数组'x'中检查的必需值,每次都有不同长度的'a', 'x'声明为

int x[1000];

在这种情况下,您可以使用memcmp: -

for ( len = 1 ; len <= 7 ; ++len )
{ for ( i = 0 ; i <= 1000-len ; ++i )
  { if ( ! memcmp( a, x+i, len * sizeof(int) ) )
    { // do something
    }
  }
}