在此发表一个模本,希望对各位有用;
#include <stdio.h>
#define N 10//序列个数
void main()
{
int num[N];//查找的数据
int sel;//要找的数
int top;//顶
int bot;//底
int mid;//中间
int flag=-1;
int i;
printf("请输入%d个数据!/n",N);
for(i=0;i<N;i++)
{
while(1)
{
scanf("%d",&num[i]);
if(i>0)
{
if(num[i]<num[i-1])
printf("输入要按升序!重输吧!/n");
else
break;
}
else
break;
}
}
puts("请输入要查找的数:");
scanf("%d",&sel);
if(sel>num[N-1]||sel<num[0])
printf("无%d此数!/n",sel);
else
{
top=N-1;
bot=0;
while(top>=bot)
{
mid=(top+bot)/2;
if(sel==num[mid])
{
flag=mid;
break;
}
else if(num[mid]>sel)
{
top=mid-1;
}
else
{
bot=mid+1;
}
}
if(-1==flag)
{
printf("无%d此数!/n",sel);
}
else
{
printf("%d在原数组中为第%d个数!/n",sel,flag+1);
}
}
}