C语言数组的查找函数

Python016

C语言数组的查找函数,第1张

#include<stdio.h>

int main()

{

int a[5]

int i,max,min

printf("input number:\n")

for(i=0i<5i++)

scanf("%d",&a[i])

max=a[0]

min=a[0]

for(i=0i<5i++){

if(a[i]>max)

max=a[i]

}

for(i=0i<5i++){

if(a[i]<min)

min=a[i]

}

for(i=0i<5i++){

printf("%d",a[i])

printf(" ")

}

printf("\n")

printf("最大值为%d\n",max)

printf("最小值为%d\n",min)

return 0

}

首先,指针默认只有一个地址的长度的空间,存不了那么多的字符。

其次,传值和传地址一塌糊涂,完全就是乱写么。

scanf的第二个参数是地址,如果本身不是指针则需要取址符。

我给你重写了算了

#include<stdio.h>

int Retrieve(int array[],int length,int x)/*形参x直接传值就可以了*/

int main()

{

int *a,x

int length,i

scanf("%d",&length)

a = (int)malloc(sizeof(int)*length)/*申请一个内存空间用来存放数据,或者直接用一个大数组也可以*/

#include <stdio.h>

int search(int arr[],int len,int num)//arr为序列,len为序列长度,num为要查找的数

{

int start,end,mid

start=0

end=len-1

mid=(start+end)/2

while(start<=end)

{

if(arr[mid]>num)

{

end=mid-1

mid=(start+end)/2

continue

}

if(arr[mid]<num)

{

start=mid+1

mid=(start+end)/2

continue

}

return mid+1

}

return -1

}

int main()

{

int a[100],i,m,num,pos

printf("输入序列长度:")

scanf("%d",&m)

printf("输入一个长度为%d的有序序列:\n",m)

for(i=0i<mi++)

{

scanf("%d",&a[i])

}

printf("输入你要查找的数:")

scanf("%d",&num)

pos=search(a,m,num)

if(pos==-1)

printf("未能在序列中找到你要查找的数。\n")

else

printf("你要查找的数在第%d个位置\n",pos)

return 0

}