新人求解为什么输不出no?

折半查找法查找输入的x是否在输入的m个按升序输入的数据

 #include <stdio.h>
int main()
{
    int m,x,i,low=0,mid,high,a[50];
    scanf("%d ",&m);
    high=m-1;
    for(i=0;i<m;i++)
    {
        scanf("%d ",&a[i]);
    }
    scanf("%d",&x);
    while(low<high)
    {
         mid=(low+high)/2;
        if(x==a[mid])
        {
            printf("%d",mid);
            break;
        }
        else if(a[mid]<x)
        {
            low=mid+1;
        }
        else if(a[mid]>x)
        {
            high=mid-1;
        }
    }
    if(low>high)
        printf("no");
        return 0;
}

#include <stdio.h>
int main()
{
    int m,x,i,low=0,mid,high,a[50];
    scanf("%d ",&m);
    high=m-1;
    for(i=0;i<m;i++)
    {
        scanf("%d ",&a[i]);
    }
    scanf("%d",&x);
    while(low<high)
    {
         mid=(low+high)/2;
        if(x==a[mid])
        {
            printf("%d",mid);
            break;
        }
        else if(a[mid]<x)
        {
            low=mid+1;
        }
        else if(a[mid]>x)
        {
            high=mid-1;
        }
    }
    if (low == high && x == a[low])
        printf("%d",low);
    else if (low>=high)
        printf("no");
        return 0;
}