You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:02:54