求解一个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;
} 展开
#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;
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询