#include<stdio.h>
int find(int a[],int n,int q)
{
int ret;
int i;
for(i=0;i<n;i++){
if(a[i]=q){
ret=i;
break;
}
else
ret=-1;
}
return ret;
}
int main()
{
int j,num[5];
int x,ret;
for(j=0;j<5;j++){
scanf("%d ",&num[j]);
}
scanf("%d",&x);
ret=find(num,5,x);
printf("%d",ret);
return 0;
}
这个需要弄懂=和==的关系。=在代码中表示赋值,而不是相等的意思。
if语句中,判断a[i]完全等于q,再执行ret=0。
因为如果是等号=, if的表达式执行,表达式的值为=等号右边的值,
如果这个值不等于0则执行if下面的语句体,如果是0则不执行if语句体,你输入:1 2 3 4 5 2 因为要查找的数是2所以if执行,所以返回0就结束了,
所以在判断是否为数组某个数的那里,把那个等于号=改为==就可以了,修改如下:
#include<stdio.h>
int find(int a[],int n,int q)
{
int ret;
int i;
for(i=0;i<n;i++){
if(a[i]==q){
ret=i;
break;
}
else
ret=-1;
}
return ret;
}
int main()
{
int j,num[5];
int x,ret;
for(j=0;j<5;j++){
scanf("%d ",&num[j]);
}
scanf("%d",&x);
ret=find(num,5,x);
printf("%d",ret);
return 0;
}
注意你的find方法for循环中
if(a[i]=q){
ret=i;
break;
}
a【i】=q是赋值,a【i】==q才是判断为相等
你赋值的是下标,返回为0,大概率为你在给数组赋值时第一个就是你想找的数,第一个的下标为0
if(a【i】==q)
应修改为 ret=a【i】
如有帮助望采纳