C++数组求最大值函数代码运行结果错误,请求排查问题
问题排查与修正
你的代码核心错误出在find_max函数的赋值语句里:
max = *(arr +1);
这里你错误地把数组的第二个元素(也就是值为5的arr[1])赋值给了max,而不是当前循环中找到的更大元素*(arr + i)。这就导致只要遇到比当前max大的元素,max就会被重置为5,最终返回结果自然是5。
修正后的find_max函数应该是:
int find_max (int *arr, int size) { int max = *arr; for ( int i = 1; i < size; i++) if (*(arr + i) > max) { max = *(arr + i); // 这里改成i,不是1 } return max; }
另外还有一个小问题:你的main函数中使用了cout,但没有包含对应的头文件,编译时可能会报错,需要在代码最顶部添加:
#include <iostream> using namespace std; // 或者使用std::cout替代cout
如果不想用using namespace std;,可以把cout改成std::cout,这样更符合C++的编码规范。
内容的提问来源于stack exchange,提问作者Alex87
相关产品推荐
相关产品推荐

