输出的一直都是最后的数而不是最大的数,不知道哪一点不对,非常感谢提供帮助的人🤧
寻找最大数的算法有问题,当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;
}
你这个最多访问到第四个元素,第五个元素访问不到