楼主这是一个例子,你看看
/*运行结果:
请按从大到小的顺序输入15个整数:
15 15 13 12 11 10 9 8 7 6 5 4 3 2 1
您输入的数没有排序或有大小相同的数,请重新输入:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 10
您输入的数没有排序或有大小相同的数,请重新输入:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
请输入要查找的数字:8
8是第8个数字。
*/
#include <stdio.h>
#define N 15
int sorted(int a[N])
{
int i;
for(i=0;i<N-1;i++)
if(a[i]<=a[i+1])
return 0;
return 1;
}
int find(int a[N],int x)
{
int i,min=0,max=N-1;
while(max-min>1)
{
if(a[min]==x)
return min+1;
else if(a[max]==x)
return max+1;
else if(a[(min+max)/2]==x)
return (min+max)/2+1;
if(x>a[(max+min)/2])
max=(max+min)/2;
else
min=(max+min)/2;
}
return 0;
}
main()
{
int a[N],x,i;
printf("请按从大到小的顺序输入%d个整数:\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
while(!sorted(a))
{
printf("您输入的数没有排序或有大小相同的数,请重新输入:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
}
printf("请输入要查找的数字:");
scanf("%d",&x);
if(!find(a,x))
printf("找不到%d!\n",x);
else
printf("%d是第%d个数字。\n",x,find(a,x));
} |