C++ 数组求和、平均值、最大值、最小值函数优化:解决数组长度获取问题
#include
using namespace std;
int sum(int nums[], int len) { int s = 0; for (int i = 0; i < len; i++) s += nums[i]; cout << s << ' '; return s; }
int max(int nums[], int len) { int m = nums[0]; for (int i = 1; i < len; i++) if (nums[i] > m) m = nums[i]; return m; }
double maxDouble(double nums[], int len) { double m = nums[0]; for (int i = 1; i < len; i++) if (nums[i] > m) m = nums[i]; return m; }
int min(int nums[], int len) { int m = nums[0]; for (int i = 1; i < len; i++) if (nums[i] < m) m = nums[i]; return m; }
double average(int nums[], int len) { return (double(sum(nums, len)) - max(nums, len) - min(nums, len)) / (len - 2); }
int main() {
int n, m;
vector
现在这个程序有一点问题,无法获得数组的长度,无论进行求和、取平均值只能获得前两个数字内容:的结果。这是因为在函数中传入数组参数时,数组名会被转换为指向数组首元素的指针,因此 sizeof(nums) / sizeof(int) 的结果实际上是指针大小除以 int 类型大小,不是数组的长度。
为了解决这个问题,可以在函数中传入数组长度作为参数,或者将数组改为使用 vector 类型。具体实现可以参考上面的代码:
原文地址: https://www.cveoy.top/t/topic/oFjY 著作权归作者所有。请勿转载和采集!