可以帮我看看这个程序哪里出错了么?是关于指针
/*找出任意个数中间的最大数和最小数,输出其位置和数值(提示:请使用动态内存管理函数结合课堂例程完成),该题命名为实验5-1.c*/#include <stdio.h>
#include <stdlib.h>
int max(int *p,int n,int *pos1);
int min(int *p,int n,int *pos2);
main()
{
int *a=NULL,i,n,max,min,position1,position2;
printf("please enter the array size:");
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int));
printf("请输入数字:\n");
for(i=0;i<n;i++)
{
scanf("%d",a+i);
}
max=max(a,n,&position1);
min=min(a,n,&position2);
printf("the max number is%d in the %d position\n",max,position1+1);
printf("the min number is%d in the %d position\n",min,position2+1);
free(a);
}
int max(int *p,int n,int *position1)
{
int max,i;
max=p[0];
*position1=0;
for(i=0;i<n;i++)
{
if(*(p+i)>max)
{max=p[i];
*position1=i;}
}
return(max);
}
int min(int *p,int n,int *position2)
{
int min,i;
min=p[0];
*position2=0;
for(i=0;i<n;i++)
{
if(*(p+i)<min)
{min=p[i];
*position2=i;}
}
return(min);
}