我有一个数组为100 int(b)的结构和一个int(a)
类型的变量我有一个函数检查“a”的值是否在数组中,并且我已经生成了数组元素和带有随机值的变量。
但它不起作用 有人可以帮我解决吗?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct {
int a;
int b[100];
} h;
int func(h v){
int i;
for (i=0;i<100;i++){
if(v.b[i]==v.a)
return 1;
else
return 0;
}
}
int main(int argc, char** argv)
{
h str;
srand(time(0));
int i;
for(i=0;0<100;i++){
str.b[i]=(rand() % 10) + 1;
}
str.a=(rand() % 10) + 1;
str.a=1;
printf("%d\n",func(str));
return 0;
}
答案 0 :(得分:6)
您的检查函数在第一次循环迭代后返回。因此,除非您要查找的值是数组的第一个元素,否则它将返回0并且永远不会检查数组的其余部分。 'return 0'需要在循环体外
for (i=0;i<100;i++){
if(v.b[i]==v.a)
return 1;
}
return 0;
此外,main()中的for循环检查0 <100(这几乎总是真的......)
for(i=0;0<100;i++){
str.b[i]=(rand() % 10) + 1;
}
应该是:
for(i=0;i<100;i++){
str.b[i]=(rand() % 10) + 1;
}
答案 1 :(得分:0)
你的循环:
for (i=0;i<100;i++){
if(v.b[i]==v.a)
return 1;
else
return 0;
}
应该是:
for (i=0;i<100;i++){
if(v.b[i]==v.a)
return 1;
}
return 0;
这样您只有在检查完所有数组条目后才会失败。您可能还希望使用指针将结构传递给函数,以避免复制开销。
答案 2 :(得分:0)
在func中查看循环中的else条件。除非您正在寻找的项目位于第一位,否则它将永远找不到它。