c语言任意输入10个数,先将其按由大到小的顺序排列,

再输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。

#include<stdio.h>
int main()
{ int t[9]={1,3,5,7,9,11,13,15,17};

int start=0,end=8,c,mid; //start表示查找区间开始的位置,end是查找区间的最末位置

scanf("%d",&c);
while(start<=end)
{
mid=(start+end)/2;

if(c==t[mid])
{
printf("%d\t,%d\t",t[mid],mid);
break;
}
else if(c>t[mid])
start=mid+1; // 如果要查找的数字大于中间数,这个时候开始的位置要从中间位置加一

else end=mid-1; //如果查找的数字小于中间数,这个时候结束的位置从要中间减一
}
if(a>b)
printf("无此元素");

system("pause");

return 0;

}
温馨提示:答案为网友推荐,仅供参考