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

二分查找未找到目标键时输出异常问题排查及修正

二分查找未找到键时无输出的问题排查与修复

我用以下代码在数组中查找指定目标键(key)并打印结果,但当目标键未找到时,我期望查找函数返回-1并打印“Key not found.”,但实际并未输出该内容,是否存在错误?

#include<stdio.h>

int binarySearch(int* arr, int size, int key){

    int low=0;
    int high=size-1;
    int mid=(low+high)/2;

    while(arr[mid]!=key){

        if(key>arr[mid]){
            low=mid+1;
            mid=(low+high)/2;
        }
        if(key<arr[mid]){
            low=0;
            high=mid-1;
            mid=(low+high)/2;
        }
        if(key==arr[mid]){
            return mid;
        }
    }
}

int main(){

    int intArr[10]={4,5,12,44,232,326,654,776,987,999};

    int res=binarySearch(intArr, 10, 1);

    if(res){
        printf("Key found at index: %d.", res);
    }else ("Key not found.");
}

错误排查与修正

我发现了此处的语法错误并已修正:
将

else ("Key not found.");

修改为

else (printf("Key not found.\n"));

修正后该部分可正常工作。同时我还采纳了@weatherwane和@poepew的建议,以下是可正常运行的完整代码:

#include<stdio.h>

int binarySearch(int* arr, int size, int key){

    int low=0;
    int high=size-1;
    int mid=(low+high)/2;

    while(high-low>0){

        if(key>arr[mid]){
            low=mid+1;
            mid=(low+high)/2;
        }
        if(key<arr[mid]){
            low=0;
            high=mid-1;
            mid=(low+high)/2;
        }
        if(key==arr[mid]){
            return mid;
        }
    }
    return -1;
}

int main(){

    int intArr[10]={4,5,12,44,232,326,654,776,987,999};

    int res=binarySearch(intArr, 10, 43);

    if(res>=0){
        printf("Key found at index: %d.\n", res);
    }
    else (printf("Key not found.\n"));
}

内容的提问来源于stack exchange,提问作者Lyrk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:45:38