回 帖 发 新 帖 刷新版面

主题:用指针求数组最值出错,为什么呢?

代码如下: 用指针求一个一维数组的最大值及最小值

#include<stdio.h> 
int main() 

    int *max,*min,i;
    int a[]={23, 90, 9, 25, 16};
    max=&a[0]; 
    min=&a[0]; 
    for(i=1;i<5;i++) 

    if(*max < *(max+i)) 
    max=(max+i); 
    else if(*min > *(min+i)) 
    min=(min+i); 

    printf("%d %d\n",*max,*min); 
    return 0;
}

回复列表 (共5个回复)

沙发

我知道了,自己把 max的指针给修改,导致数组溢出出错。

我这还用另外一种方法做也出问题了,求解?
代码如下:

#include <stdio.h>

int main(void)
{
    int  j, arr[]={23, 90, 9, 25, 16};
    int min, max;
        min =  max = 0;
        for ( j = 0; j < 5; j++)
        {
            if(arr[min] > arr[j] )
                min = j;
            if(arr[max] < arr[j])
                max = j;
        }
        printf("the min arr is %d\n", min);
        printf("the max arr is %d\n", max);
        return 0;
}

板凳

1楼程序没发现明显错误啊……

3 楼

i<4,因为当i==4时,如果你i<5的话,你循环里面有一个max+1会越界

4 楼

[quote]i<4,因为当i==4时,如果你i<5的话,你循环里面有一个max+1会越界
[/quote]
人家主楼的程序自己已经发现问题了好不……

5 楼

[quote]i<4,因为当i==4时,如果你i<5的话,你循环里面有一个max+1会越界
[/quote]

谢谢了

我来回复

您尚未登录,请登录后再回复。点此登录或注册