#include <stdio.h>
#define N 15
int main()
{
int i; //定于数组与需要的变量
int low = 0;
int high = N - 1;
int mid;
int k = -1;
int m;
int a[N];
printf(“请输入15个数字(由大到小,中间用空格相隔):\n”); //输入要求
scanf("%d",&a[0]);
i=1;
while(i<15) //对数组a进行赋值
{
scanf("%d",&a[i]);
if(a[i]<=a[i-1])
{
i++;
}
else
{
printf(“输入的数字比上一个大了。\n”);
}
}
printf("\n");
printf("数组中的数据如下:\n"); //输出数组a
for(i = 0; i < N; i++)
{
printf("%4d ",a[i]);
}
printf("\n");
printf("请输入您想要查找得数字:");
scanf("%d",&m);
while(low <= high) //利用折半法查找该数
{
mid = (low + high) / 2;
if(m > a[mid])
{
high = mid - 1;
}
else
{
if(m > a[mid])
{
low = mid + 1;
}
else
{
k = mid;
break;
}
}
}
if(k >= 0) //输出查找要求
{
printf("位置是 %d,这是 %d\n",k+1,m);
}
else
{
printf("无此数\n");
}
return 0;
}
#include <stdio.h>
#define N 15
int main()
{
int i; //定于数组与需要的变量
int low = 0;
int high = N - 1;
int mid;
int k = -1;
int m;
int a[N];
printf(“请输入15个数字(中间用空格相隔):\n”); //输入
scanf("%d",&a[0]);
i=1;
while(i<15)
{
scanf("%d",&a[i]);
if(a[i]>=a[i-1])
{
i++;
}
else
{
printf(“输入的数字比上一个小了。\n”);
}
}
printf("\n");
printf("数组中的数据如下:\n");
for(i = 0; i < N; i++)
{
printf("%4d ",a[i]);
}
printf("\n");
printf("请输入您想要查找得数字:");
scanf("%d",&m);
while(low <= high)
{
mid = (low + high) / 2;
if(m < a[mid])
{
high = mid - 1;
}
else
{
if(m > a[mid])
{
low = mid + 1;
}
else
{
k = mid;
break;
}
}
}
if(k >= 0)
{
printf("位置是 %d,这是 %d\n",k+1,m);
}
else
{
printf("无此数\n");
}
return 0;
}