怎样在C语言中查找数字

Python017

怎样在C语言中查找数字,第1张

#include<stdio.h>

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 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=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

}

}