全部问题 > 当前问题

这个程序不懂哪里出错了

#include<stdio.h>

int find(int x[],int t)

{

int left=0,mid,right=14;

while(left<=right)

{

mid=(left+right)/2;

if(t==x[mid])

{

return mid;

}

else

{

if(t>x[mid])

{

left=mid+1;

}

else

{

right=mid-1;

}

}

return -1;

}

main()

{

int a[15]=

{3,7,12,19,21,24,26,33,39,41,45,50,52,64,68};

printf("%d\n",find(a,52));

}

}


涵涵¢ 2017-8-6 23:06:28

共 2 个回答

qqq 2017-8-8 16:09:55

可能是你大括号写太多了。。

return -1 应该写在while循环外面,main函数应该写在fun函数外面,你仔细看看自己写的是个啥。

这是我改过的,不会改就看看吧。

#include<stdio.h>


int find(int x[],int t)


{


int left=0,mid,right=14;


while(left<=right)


{


mid=(left+right)/2;


if(t==x[mid])


{


return mid;


}


else


{


if(t>x[mid])


{


left=mid+1;


}


else


{


right=mid-1;


}

}

}

return -1;

}


main()

{


int a[15]={3,7,12,19,21,24,26,33,39,41,45,50,52,64,68};


printf("%d\n",find(a,52));


}


涵涵¢ 2017-8-8 21:53:06

回复 qqq:好的,谢谢啊


问题来自: 二分查找