用折半查找法数组中几个元素的值

#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;
}

是不是编译不通过,先改下这里

img

望采纳
可能是语法错了,也可能是单词拼错了