我编写了下列程序,用于在元素按升序输入时对数组执行二进制搜索。为什么这个二进制搜索程序给出错误?
#include<stdio.h>
#include<conio.h>
void main()
{
int key,high,low,mid,n,i,a[100];
clrscr();
printf("Enter the number of elements:");
scanf("%d",&n);
printf("\nEnter the elements:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("Enter the key element:");
scanf("%d",&key);
low=0;
mid=n-1;
mid=(low+high)/2;
while(low <= high && key != a[mid])
{
mid=(low+high)/2;
if (key > a[mid])
low=mid+1;
else
high=mid-1;
}
if (a[mid] == key)
printf("\nKey element is present at position %d",mid+1);
else
printf("\nElement not present.");
getch();
}
当我跑在开发的C++编译的程序,我得到了一个“内存不能为read”错误。这怎么可以纠正?