这个c语言程序哪里错了?为什么查找不了?

#include<stdio.h>
void order (int a[]);
void order (int a[])
{
int i,j,k,max,t;
for(i=0;i<15;i++)
{
max=i;
for(j=i+1;j<=14;j++)
{
if(a[max]<a[j])
max=j;
}
if(max!=i)
{
t=a[max];
a[max]=a[i];
a[i]=t;
}
}
}
int search(int a[],int x)
{
int low,high,mid;
low=0;
high=14;
while(low<=high)
{
mid=(low+high)/2;
if(x>a[mid])
low=mid+1;
else if(x<a[mid])
high=mid-1;
else
return mid;
}
return -1;
}
int main(void)
{
int j,x,count;
int a[15]={21,34,52,15,64,75,29,43,2,47,5,1,0,11,13};
order(a);
for(count=0;count<=14;count++)
{
printf("a[%d]=",count);
printf("%d\n",a[count]);
}
scanf("%d",&x);
j=search(a,x);
if(j==-1)
printf("没有可查询的x");
else printf("%d",j);
return 0;
}

你题目是什么?
你题目的解答代码如下:

#include <stdio.h>
void order(int a[]);
void order(int a[])
{
    int i, j, k, max, t;
    for (i = 0; i < 15; i++)
    {
        max = i;
        for (j = i + 1; j <= 14; j++)
        {
            if (a[max] < a[j])
                max = j;
        }
        if (max != i)
        {
            t = a[max];
            a[max] = a[i];
            a[i] = t;
        }
    }
}
int search(int a[], int x)
{
    int low, high, mid;
    low = 0;
    high = 14;
    while (low <= high)
    {
        mid = (low + high) / 2;
        if (x < a[mid])  //  > 改成 <
            low = mid + 1;
        else if (x > a[mid]) // < 改成 >
            high = mid - 1;
        else
            return mid;
    }
    return -1;
}
int main(void)
{
    int j, x, count;
    int a[15] = {21, 34, 52, 15, 64, 75, 29, 43, 2, 47, 5, 1, 0, 11, 13};
    order(a);
    for (count = 0; count <= 14; count++)
    {
        printf("a[%d]=", count);
        printf("%d\n", a[count]);
    }
    scanf("%d", &x);
    j = search(a, x);
    if (j == -1)
        printf("没有可查询的x");
    else
        printf("%d", j);
    return 0;
}

img

如有帮助,望采纳!谢谢!


int search(int a[],int x)
{
int low,high,mid;
low=0;
high=14;
while(low<=high)
{
mid=(low+high)/2;
if(x>a[mid])
low=mid+1;
else if(x<a[mid])
high=mid-1;
else
return mid;

}
return -1;
}