当m=7时陷入死循环 怎么破
#include<stdio.h>int m;
int show(int a[],int p,int r)
{
while(p<r)
{
if(m==(p+r+2)/2)
{ printf("%d\n",a[(p+r)/2]);
goto o;}
if((m<(p+r+2)/2))
r=(p+r)/2;
else
p=(p+r)/2;
}
if(m==p)
printf("%d\n",a[p-1]);
if(m==r)
printf("%d\n",a[r-1]);
o:return 0;}
int main()
{
int a[]={1,2,3,4,5,6,7};
printf("想要输出第几小的数:");
scanf("%d",&m);
if
(m>7) printf("-1");
else show(a,0,6);
return 0;}