问题遇到的现象和发生背景
C语言学习二分法;一行代码放在while外就运行不了,放在while里面就能正常运行。
问题相关代码,请勿粘贴截图
#define M 10
#include<stdio.h>
void main()
{
static int a[M]={-12,0,6,16,23,56,80,100,110,115};
int low,mid,high,n,found;
low=0;
high=M-1;
found=0;
mid=(low+high)/2;
printf("输入想要找的数字:");
scanf("%d",&n);
while(low<=high)
{
if(n==a[mid])
{
found=1;
break;
}
else if(n<=a[mid])
{
high=mid-1;
}
else
{
low=mid+1;
}
}
if(1==found)
{
printf("所找的数字%d,在第%d位\n",n,mid);
}
else
{
printf("数字%d不在序列上\n");
}
}
运行结果及报错内容
如图,为什么将mid=(low+high)/2;放在whil里面就能正常运行,而在预处理部分的时候程序无法正常运行。