求解一个C语言程序,二分法查找数

程序里设计的返回值不是偏移量而是真正的序数,现在的疑问是,当输入值超过数组中的最大数时,为什么返回的值是7而非6?#include<stdio.h>intbiFind(i... 程序里设计的返回值不是偏移量而是真正的序数,现在的疑问是,当输入值超过数组中的最大数时,为什么返回的值是7而非6?
#include<stdio.h>
int biFind(int arr[],int n,int x);
int main(){
int a[6],n=0,index,x;
FILE *p;
if((p=fopen("UP.txt","r"))==0){
printf("ERROR\n");
return 0;}
while(!feof(p))
fscanf(p,"%d",&a[n++]);
fclose(p);
printf("Enter the number that you wanna find:");
scanf("%d",&x);
index=biFind(a,n,x);
printf("The ordinal is %d\n",index);
return 0;
}

int biFind(int arr[],int n,int x)
{
int l=0,h=n-1,m;
while(h>=l)
{
m=(h+l)/2;
if(arr[m]==x)
break;
if(arr[m]>x)
h=m-1;
if(arr[m]<x)
l=m+1;
}

return m+1;
}
展开
 我来答
antimoth
2013-12-29 · 超过36用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:69.5万
展开全部
文件末尾有结束标志,还有你文件是怎么写的,vi有时候会自动末尾加换行...
是不是读的时候把那个也读进去了,然后n就多加了一下...
你读完文件打印下n是多少就清楚了...
heshiweij
2013-12-29 · TA获得超过688个赞
知道小有建树答主
回答量:695
采纳率:100%
帮助的人:165万
展开全部
代码写成这样让人怎么看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式