麻烦帮忙改改程序,急!

来源:百度知道 编辑:UC知道 时间:2024/06/04 23:14:43
这个是折半查找的程序 麻烦哪位高手帮忙看看哪里错了,为啥我运行结果总是-1. 我尝试过把high值直接赋9但是只能查找到前9个数 最后一个数不能找到。跪求大虾帮忙!
#include<stdio.h>
#include<stdlib.h>
#define MAXLEN 100
struct datatype{
int elem[MAXLEN];
int last;
};
typedef struct datatype DATATYPE;

int search(DATATYPE a,int k)
{
int low,mid,high;
low=1;
high=MAXLEN-1;
while(low<=high)
{
mid=(low+high)/2;
if(a.elem[mid]==k)
return mid;
else if(k>a.elem[mid])
low=mid+1;
else
high=mid-1;
}
return -1;
}
void print(DATATYPE a)
{
int i;
for(i=1;i<=a.last;i++)
{
printf("%10d",a.elem[i]);
}
printf("\n");
}

void main()
{
int i,k,m,n;
DATATYPE a;
a.last=0;
printf("Please input the elements:\n");
for(i=1;i<=10;i++)
{ scanf("%d&qu

不是用c的。但是这里#define MAXLEN 100。为什么要把这个常量定为100.
从你后边看。你不就要在10个数里找吗?你这里写了100.上来就要找a.elem[50]。哪有啊