我遇到如下问题: 我有一个数组(比如说)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)
我怎样才能实现这种变化的条件?
答案 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
}
}
}