用半折法查找数字。。。帮帮看这个程序,哪里错了,为什么是死循环?
程序代码:
#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 编辑 ]