Linear search程序异常求助:仅能搜索到首个匹配元素
Linear Search 程序问题排查与修复
Hey there! Let's break down why your linear search isn't working as expected and fix it up step by step.
问题1:搜索函数中return -1的位置错误
你的linear_searching函数里,return -1被放在了for循环的内部——这意味着只要数组第一个元素不是目标值,函数会立刻返回-1,循环根本没机会检查后面的元素!这就是为什么只有第一个元素10能被搜到,其他元素永远不会被遍历到。
正确逻辑应该是:遍历完整个数组的所有元素后,如果还是没找到目标值,再返回-1。
问题2:主函数中使用了未赋值的变量i
在main函数的else分支里,你写了printf("the element is present in the array on this index %d",i);,但这里的i是main里定义的局部变量,从来没有被赋值过,会输出错误的垃圾值。你应该用函数返回的result变量,它才是正确的索引值。
修正后的完整代码
#include<stdio.h> int linear_searching(int arr[],int n,int no); //function prototype int main()//main function { int n; int no=20;//no to be searched int result; int arr[]={10,20,80,30,60,50,110,100,130,170}; n=sizeof(arr)/sizeof(arr[0]); result=linear_searching(arr,n,no); if(result==-1) { printf("the element is not present in this array"); } else { printf("the element is present in the array on this index %d", result); } return 0; } int linear_searching(int arr[],int n,int no)// function for searching { int i; for( i=0;i<n;i++) { if(arr[i]==no) return i; //找到目标元素时立即返回对应索引 } return -1; //遍历完所有元素都没找到,才返回-1 }
验证效果
现在运行程序:
- 搜索
20会正确返回索引1; - 搜索不存在的元素(比如
99),会提示元素不存在; - 输出的索引值不再是垃圾值,完全符合预期。
内容的提问来源于stack exchange,提问作者Beginner in programming
相关产品推荐
相关产品推荐

