回复 1# 的帖子
#include<stdio.h>
void main()
{
void arrange(int a[]);
int m=19, n=0, num, t, i, k=1, a[20]={0};
printf("请输入一个数组:");
/*输入一个20个数的数组给a*/
for(i=0;i<20;i++)
{
scanf("%d",&a[i]);
}
printf("ok you have input 20\n");
arrange(a);
/*数组a原样输出*/
for(i=0;i<20;i++)
{
printf("%d ",a[i]);
}
/*输入要找的数num*/
printf("please input a number:");
scanf("%d",&num);
/*折半查找*/
while(m-n>1)
{
t=(m+n)/2;
if(num==a[t])
break;
else if(num<a[t])
m=t;
else
n=t;
}
if(num==a[t+1]) printf("在原始数组中找到了你要找的数字%d,它是数组的第%d元素.\n",num,t+1);
else if(num==a[t-1]) printf("在原始数组中找到了你要找的数字%d,它是数组的第%d元素.\n",num,t);
else if(num==a[t]) printf("在原始数组中找到了你要找的数字%d,它是数组的第%d元素.\n",num,t+1);
else printf("在原始数组中没有找到你要找的数字%d\n",num);
}
void arrange(int a[])
{
int i,t,k = 0;// k没有初始化肯定死了,,,
/*数组a从在大到时小排序*/
do
{
for(i=0;i<19;i++)
{
if(a[i]>a[i+1])
{
t=a[i+1];
a[i+1]=a[i];
a[i]=t;
}
}
k++;
}while(k<20);
}