#include
#define N 15
int mian()
{
int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int mid,flag,bott,loca,top,number,sign,c;
while(flag)
{
loca=0;
top=0;
bott=N-1;
printf("请输入要查找的数(0-14):\n");
if(numbera[N-1])
loca=-1;
while(sign==1&&top<=bott&&loca>=0)
{
int mid=(bott+top)/2;
if(number==a[mid])
{
loca=mid;
printf("找到了,数%d在数组的第%d位.\n",number,loca+1);
sign=0;
}
else if(number
bott=mid-1;
else
top=mid+1;
}
if(sign==1||loca==-1)printf("\n查无此数\n");
printf("\n是否继续查找?(Y/N)");
scanf("%c",&c);getchar();
printf("\n");
if(c=='N'||c=='n')
flag=0;
}
return 0;
}
不知道是哪里出了问题??
修改完善如下,供参考:
#include <stdio.h>
#define N 15
int main() //mian()
{
int a[N] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
int mid, flag = 1, bott, loca, top, number, sign ; //修改
char c; //修改
while (flag)
{
sign = 1; //修改
loca = 0;
top = 0;
bott = N - 1;
printf("请输入要查找的数(0-14):\n");
scanf("%d", &number); //修改
getchar(); //修改
if (number > a[N - 1]) //修改
loca = -1;
while (sign == 1 && top <= bott && loca >= 0)
{
int mid = (bott + top) / 2;
if (number == a[mid])
{
loca = mid;
printf("找到了,数%d在数组的第%d位.\n", number, loca + 1);
sign = 0;
}
else if (number < a[mid]) //修改
bott = mid - 1;
else
top = mid + 1;
}
if (sign == 1 || loca == -1) printf("\n查无此数\n");
printf("\n是否继续查找?(Y/N)");
scanf(" %c", &c); //getchar(); //修改
printf("\n");
if (c == 'N' || c == 'n')
flag = 0;
}
return 0;
}
是不是编译不通过,先改下这里
望采纳
可能是语法错了,也可能是单词拼错了