void search(int x[],int y,int n)
void main()
{
int a[10],i,key,n
printf("How many numbers you want to input(n<=10):\n")
scanf("%d",&n)
printf("Please input the array!\n")
for(i=0i<ni++)
scanf("%d",&a[i])
puts("The key you want to search:")
scanf("%d",&key)
search(a,key,n)
getch()
}
void search(int x[],int y,int n)
{
int i,j=-1
for(i=0i<ni++)
if(y==x[i])
j=i
if(j!=-1)
{
printf("下标为:%d\n",j)
printf("它是该数列中的第 %d 个数。",j+1)
}
else
printf("NOT FOUNDED!")
}
#define N 15main()
{int a[N],i,j,n,tem,flag=1,number,top,bott,mid,loca,sign=1
char c
printf("enter the array of line is:")
scanf("%d",&n)
printf("\n")
printf("enter the number of array:")
for(i=0i<ni++)
scanf("%d",&a[i])
printf("\n")
for(j=0j<=n-2j++)
for(i=0i<n-j-1i++)
if(a[i]<a[i+1]){tem=a[i]a[i]=a[i+1]a[i+1]=tem}
printf("output the array:")
for(i=0i<ni++)
printf("%3d",a[i])
printf("\n")
flag=1
while(flag)
{printf("enter the another number:")
scanf("%d",&number)
top=0bott=n-1loca=0
if(number>a[0]||number<a[n-1])loca=-1
while((sign==1)&&(top>=bott))
{mid=(bott+top)/2
if(number==a[mid]){loca=mid
printf("find %d, its position is %d\n",number,loca+1)
sign=0}
else if(number<a[mid])top=mid-1
else bott=mid+1}
if(sign==1||loca==-1)
printf("%d is not found \n",number)
printf("continue or not(Y/N)?")
while(getchar() != '\n') //插入这语句循环读取scanf("%d",&number)后面留下的内容!
continue
scanf("%c",&c)//注意这里!!!它将前面scanf("%d",&number)留下来的回车符给读进去给c了,所以c永远不等于‘N’或‘n’
if(c=='N'||c=='n')flag=0
}
}
以下是新修改过的:
#define N 15
main()
{
int a[N],i,j,n,tem,flag=1,number,top,bott,mid,loca,sign=1
char c
printf("enter the array of line is:")
scanf("%d",&n)
printf("\n")
printf("enter the number of array:")
for(i=0i<ni++)
scanf("%d",&a[i])
printf("\n")
for(j=0j<=n-2j++)
for(i=0i<n-j-1i++)
if(a[i]<a[i+1])
{
tem=a[i]
a[i]=a[i+1]
a[i+1]=tem
}
printf("output the array:")
for(i=0i<ni++)
printf("%3d",a[i])
printf("\n")
flag=1
while(flag)
{
printf("enter the another number:")
scanf("%d",&number)
top=0
bott=n-1
loca=0
if(number <= a[0] &&a[n-1] <= number)
{
while((sign==1)&&(top <= bott)) //你这里原来的判断有误
{
mid=(bott+top)/2
if(number==a[mid])
{
loca=mid
printf("find %d, its position is %d\n",number,loca+1)
sign=0
}
else if(number<a[mid])
top=mid+1//还有这两句
else
bott=mid-1
}
}
if(sign==1)
printf("%d is not found \n",number)
sign=1//注意这里的变量,如果少了,你再次输入查找时,到while((sign==1)&&(top <= bott)) 这句时,永远进不了!
printf("continue or not(Y/N)?")
while(getchar()!='\n')
scanf("%c",&c)
if(c=='N'||c=='n')
flag=0
}
}