(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增大就可以了

用c语言找最大值和最小值
用指针求含有十个元素的数组最大值和最小值 主函数参考 int main(){ int a[10],i,maxnum,minnum;for(i=0;i<10;i++)scanf("%d",&a[i]);FindMaxandMin(a,10,&maxnum,&minnum);printf("%d %d",maxnum,minnum);} 输入格式:数组 输出格式:最大值 最小值 输入样例:1 2 3 5 ...

c语言编程实现,从键盘上输入8个数,求出最大值和最小值用指针传递数组...
} 这段 C 语言代码实现了从键盘上输入 8 个数,并使用指针传递数组来找到这些数中的最大值和最小值。

C语言,使用指针作为函数参数,写一求数组中最大值和最小指的函数
intmain(intargc,constchar*argv[]){。inta[]={1,5,6,2,3,8,9,7,4,5};//定义一个十个数据的数组 intmax;//存放最大值 intmin;//存放最小值 hanshu(a,10,&max,&min);//函数传送数组,并将最大值,最小值的地址传送 printf("Themaxnumberis%d...

C语言中怎样用指针找出一维数组中的最大值和最小值并输出它们的下标
1、新建一个工程和.c文件,并且输入主函数和头文件。2、定义全局变量。3、定义变量类型。4、用两个for语句给数组元素赋值。5、调用求最小值的函数。6、函数的总体流程如下图。7、在主函数中输出结果,编译、运行,得到最后结果。

使用数组和指针,求出手工输入十个数最大值和最小值
您可以使用C语言中的数组和指针来手动输入十个数,并计算出最大值和最小值。以下是一个示例程序:```c include <stdio.h> int main() { int numbers[10]; \/\/ 数组用于存储输入的十个数 int *ptr; \/\/ 指针用于遍历数组 int max, min; \/\/ 用于存储最大值和最小值 \/\/ 输入十个...

c语言:用指针做函数参数从10个数中找出其中最大值和最小值。
printf("输入10个整数,找出其中最大值和最小值···\\n");int a[10]={0};int max,min,i;for(i=0;i<=9;i++){ printf("请输入第%d个整数:",(i+1));scanf("%d",&a);} max=min=a[0];for(i=0;i<=9;i++){ if(a>max)max=a;if(a<min)min=a;} printf("最大值为...

C语言,编写程序,使用指针求出一维整型数组,数组自定,求出最大值及其下 ...
("\\n"); printf ("===\\n\\n"); printf("请输入数组内容,共%d个元素: ",len);for(i=0; i<len; p++,i++) {scanf("%d",p);if(*p>*max)max = p;}printf ("\\n");printf ("

c语言中,用指针,实现从键盘输入十个整数,计算出最大值和最小值,并返 ...
int *p,*q;int max=0,min=100;p=&max;\/\/指针P指向max q=&min;\/\/指针q指向min int x;scanf("%d",&x);while(x!=0) \/\/输入0结束输入 { if(*p<x)p=x;if(*q>x)q=x;scanf("%d",&x);} printf("max:%d\\tmin:%d\\n",*p,*q);while(1);return 0;} 如果确定为输入10 ...

C语言指针实现自定义函数求一维数组中的最大值和最小值
} int max=Integer.MIN_VALUE;int min=Integer.MAX_VALUE;for(int i=0;i<arr.length;i++){ if(arr>max){\/\/求出最大值 max=arr;} if(arr<min){\/\/求出最小值 min=arr;} } System.out.println("\\n最大值:"+max);System.out.println("最小值:"+min);} } ...

C语言 利用指针实现求数组元素中的最大值和最小值
for(i=1;i<N;i++) 数组下标是 0开始的。 不是1 。 1就不对了。 你改改看看 for(i=1;i<N;i++){ if(*p<*(p+i))p=(p+i); \/\/这应该是用个临时变量 你这样改变这节的指向 就不对哦 else if(*t>*(t+i))t=(t+i);} ...

相似回答