二分查找未找到目标键时输出异常问题排查及修正
二分查找未找到键时无输出的问题排查与修复
我用以下代码在数组中查找指定目标键(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
相关产品推荐
相关产品推荐

