C++比大小问题(很小白)

输出的一直都是最后的数而不是最大的数,不知道哪一点不对,非常感谢提供帮助的人🤧

img

寻找最大数的算法有问题,当i=4时,arr[4]=250,arr[5]越界了,如果此处地址的值小于250(如值为0时),则最大值则会变成m=arr[4]=250, 所以算法不正确。(可以在原代码打印arr[i]的值和arr[i+1]的值,观察一下代码的运行情况。)
一个解决办法是把m先初始化为arr[0], 然后在循环里依次和数组每一个元素比较,如果大于m当前的值,则把数组这个元素的值赋值给m,当循环结束,则得出数组arr最大的值。

#include <iostream>

using namespace std;

int main(void){
    
    int arr[5]={300,350,200,400,250};
    
    int m=arr[0];
    
    for(int i=1;i<5;i++){
        
    if(arr[i]>m){
        m=arr[i];
        }
        
        //if(arr[i]>arr[i+1]){
        //    printf("a[%d]=%d,a[%d]=%d\n",i,arr[i],i+1,arr[i+1]);
        //    m=arr[i];
        //}else{
        //    //printf("a[%d]=%d\n",i+1,arr[i+1]);
            //m=arr[i+1];
    //    }
    }
    
    cout<<"最重的小猪体重为:"<<m<<endl;
    
    return 0;
} 

img

img

你这个最多访问到第四个元素,第五个元素访问不到