//我不用你付费,把分给我就行。
#include "stdio.h"
#include <ctype.h>
int input(int *x)
{
int i=0;
do
{
scanf("%d",x+i);
x[i+1] = getchar();
i=i+1;
}while(x[i]!='\n');
return i;
}
void output(int *x,int n)
{
int i;
for(i=0;i<n;i++)
printf("%d\t",x[i]);
printf("\n\n");
}
void sort(int *x,int n)
{
int i,j,temp;
int min;
for(i=0;i<n-1;i++)
{
min=i;
for(j=i+1;j<n;j++)
{
if(x[min]>x[j])
{
min=j;
}
}
temp=x[min];
x[min]=x[i];
x[i]=temp;
}
}
void find(int d,int *x,int t,int b)
{
while(x[int((t+b)/2)]!=d)
{
if(x[int((t+b)/2)]>d)
t=int((t+b)/2)-1;
else
b=int((t+b)/2)+1;
if(t==b)
{
if(x[t]==d)
printf("找到该数,位于第%d个。",t+1);
else
printf("没找到该数!");
break;
}
}
if(t!=b)
printf("找到该数,位于第%d个。",int((t+b)/2)+1);
return;
}
int main()
{
int x[50];
int n;
int d;
printf("输入一组整数,最后一个数后输入回车(中间不要有空格)结束:\n");
n=input(x);
printf("\n");
sort(x,n);
printf("输入需要查找的整数:\n");
scanf("%d",&d);
find(d,x,n-1,0);
//输出该数组
output(x,n);
}
温馨提示:答案为网友推荐,仅供参考