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
}