基础c语言 基础c语言

用二分法找有序数组中的数
为什么运行之后输入要找的数程序就结束了
望大佬解答

img

img

第28行,scanf("%d",&n); n 的前面少了 ‘&’ 符号。void binary_search(int arr[],int n,int sz) 函数里 while(){}的 花括号括错地方了,修改如下,供参考:

#include <stdio.h>
#include<string.h>
void binary_search(int arr[],int n,int sz)
{
    int mid,left,right;
    left = 0;
    right = sz-1;
    while(left<=right){
          mid = (left+right)/2;
          if(n<arr[mid]){
             right = mid-1;
          }
          else if(n>arr[mid]){
             left = mid+1;
          }
          else{
             printf("你所要查找的数在数组中的下标为:%d\n",mid);
             break;
          }
    }
    if(left>right){
          printf("没有找到\n");
    }
}
int main()
{
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    int n,sz;
    sz = sizeof(arr)/sizeof(arr[0]); //求数组长度
    printf("请输入要查找的数\n");
    scanf("%d",&n);
    binary_search(arr,n,sz);
    return 0;
}

#include <stdio.h>
#include<string.h>
void binary_search(int arr[],int n,int sz)
{
int mid,left,right;
left = 0;
right = sz-1;
while(left<=right){
mid = (left+right)/2;
if(n<arr[mid]){
right = mid-1;
}
else if(n>arr[mid]){
left = mid+1;
}
else{
printf("你所要查找的数在数组中的下标为:%d",mid);
break;
}
if(left>right){
printf("没有找到\n");
}
}

}
void main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int n,sz;
sz = sizeof(arr)/sizeof(arr[0]); //求数组长度
printf("请输入要查找的数\n");
scanf("%d",&n);
binary_search(arr,n,sz);
}