假设有1,2,3,4,5,6,7,对应数组s[0]到s[6],输入n=7,运行到a=0,b=n-2,b就等于5了。如果x等于7,那就无法查到。
还是这些数字,假设b=6,进入while()循环,当x=3是,因为s[average]=4,所以xs[average],a=average+1=2,因此a=b,跳出while()循环,打印"none"。
/*在数组s中查找x*/
printf("Index=");
flag=0;
if(n%2==0)
{
if(x==s[n-1]) { c=n-1;printf("%6d",&c); flag=1;}
a=0;
b=n-2;
} /*如果输入了偶数个元素,舍尾变为奇数个*/
else
{ a=0;
b=n-1;}
while(a<=b) {
average=(a+b)/2;
if(x==s[average])
{printf("%d",&average);flag=1;break;}
else{
if(x b=average-1;
else
a=average+1;
}
}
if(flag==0) printf("None");
return 0;
明天再给你答案,可以吗?