用半折法查找数字。。。帮帮看这个程序,哪里错了,为什么是死循环?
程序代码:#include<stdio.h>
//#define N 15
void main()
{
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
int i,flag,m,n,number,p;
//printf("由大到小输入15个数字:");
//for(i=0;i<15;i++)
// scanf("%d",&a[i]);
printf("请输入要查找的数:");
scanf("%d",&number);
flag=0;
if(number<=a[0]&&number>=a[14])
{
m=0,n=14;
p=(m+n)/2;
while(flag==0&&p!=0)
{
p=(m+n)/2;
if(number==a[0])
{flag=1;p=0;}
else if(number==a[14])
{flag=1;p=14;}
else if(number>a[p])
m=0,n=p;
else if(number<a[p])
m=p,n=14;
if(number==a[p])flag=1;
}
if(number==a[p])flag=1;
}
if(flag==0)printf("查无此数!\n");
else if(flag==1)printf("该数为第%d个数\n",p+1);
}
查找4,7,9,10,11,13会进入死循环,不知道为什么。。。[ 本帖最后由 wwfdzh2012 于 2012-12-30 11:44 编辑 ]









