(c语言)用指针求数组的最大值最小值

我用这样编但还是,最后结果中最小值是对的,最大值是错的。。。到底是怎么回事????求高手
#include<stdio.h>
int max(int *m,int n)
{
int t;
t=*m;
for(m++;m<m+(n--);m++)
if(*m>t)t=*m;
return t;
}
int min(int *q,int n)
{
int t;
t=*q;
for(q++;q<q+(n--);q++)
if(*q<t)t=*q;
return t;
}
void main()
{
int a[10],i,*p;
p=a;
printf("请输入:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("其中最大数为:%d\n",max(p,10));
printf("其中最小数为:%d\n\n\n",min(p,10));
}

#include<stdio.h>
int main() 

int a[] = {1,2,3,4,5,6,7,8,9,10};
int max, min;
max = min = a[0]; //假设第1个元素即是最大值也是最小值。
int *p = a;  
//遍历数组,找出数组a中的最大数和最小数
for (int inx=0; inx!=sizeof(a) / sizeof(int); ++inx) {
if (*(p+inx) > max) max = *(p + inx);  
else if (*(p+inx) < min) min = *(p+inx);
}
printf("最大数:%d\t最小数:%d\n", max, min);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-27

数组越界了,for(q++;q<q+(n--);q++)和for(m++;m<m+(n--);m++)这个两个地方n--改为--n

#include<stdio.h>

int max(int *m,int n)
{
  int t;
  t=*m;
  for(m++;m<m+(--n);m++)
      if(*m>t)t=*m;
  return t;
}
int min(int *q,int n)
{
  int t;
  t=*q;
  for(q++;q<q+(--n);q++)
      if(*q<t)t=*q;
  return t;
}
void main()
{
  int a[10],i,*p;
  p=a;
  printf("请输入:\n");
  for(i=0;i<10;i++)
       scanf("%d",&a[i]);
  printf("其中最大数为:%d\n",max(p,10));
  printf("其中最小数为:%d\n\n\n",min(p,10));
}

本回答被提问者和网友采纳
第2个回答  2013-11-27
for(m++;m<m+(n--);m++)改为for(m++;m<m+n;m++)

n是不变的m增大就可以了