C语言的问题...囧
有15个数俺从小到大的顺序存放在一个数组中。输入一个数,要求用折半法查找法找出该数是数组中的的第几个元素值。如果该数不存在,输出“不在表列中”。#include<stdio.h>
void main()
{
int a[15],i,top=0,bott=14,mid=7,n,flag=0;
printf("按顺序输入15个数\n");
for(i=0;i<15;i++)
scanf("%d",&a[i]);
printf("输入你要查询的数字\n");
scanf("%d",&n);
if(n<a[0]||n>a[14])
{flag=0;
goto loop;
}
else
{
while(n!=a[mid]||top!=mid)
{
while(n<=a[mid])
{
if(n==a[mid])
{flag=1;
break;}
bott=mid;
mid=(top+bott)/2;
}
while(n>a[mid])
{
if(n==a[mid])
{flag=1;
break;}
top=mid;
mid=(top+bott)/2;
}
}
}
loop:if(!flag)
printf("不在表列中\n");
if(flag)
printf("第%d个元素的值\n",mid);
}
为什么会出现以下情况:
按顺序输入15个数
1 3 4 5 6 8 12 23 34 44 45 56 58 68 回车
输入你要查询的数字
12回车
| /*光标停在这一行,然后就卡住点什么都没反应,只能关掉Turboc C*/