如何用for循环结合指针实现两个数组相乘并计算加权平均值
用for循环替代手动累加实现加权平均值
你可以用for循环遍历两个数组的对应元素,逐步累加乘积来计算加权平均值,这样代码更简洁,也能适配更长的数组。这里提供两种实现方式:
方式一:数组下标遍历(直观易懂)
直接通过数组下标访问每个元素,循环对应数组长度的次数,每次将marks[i]和Weightage1[i]的乘积加到结果中:
#include <iostream> using namespace std; int main() { double marks[4] = { 100,89,45,88 }; double Weightage1[4] = { 0.1,0.2,0.3,0.4 }; double WeightedAverage = 0; const int arrLength = 4; // 定义数组长度,方便后续修改 for (int i = 0; i < arrLength; ++i) { WeightedAverage += marks[i] * Weightage1[i]; } cout << WeightedAverage << endl; return 0; }
方式二:指针遍历(保持原代码的指针风格)
如果想保留指针的使用方式,也可以用for循环移动指针,每次取当前指针指向的元素相乘累加:
#include <iostream> using namespace std; int main() { double marks[4] = { 100,89,45,88 }; double Weightage1[4] = { 0.1,0.2,0.3,0.4 }; double WeightedAverage = 0; const int arrLength = 4; double* ptrA = marks; double* ptrB = Weightage1; for (int i = 0; i < arrLength; ++i) { WeightedAverage += *ptrA * *ptrB; ptrA++; // 指针向后移动一位,指向下一个元素 ptrB++; } cout << WeightedAverage << endl; return 0; }
关键说明
- 定义
arrLength常量记录数组长度,避免硬编码数字,后续修改数组长度时只需改动这一处。 - 循环中每次累加对应位置的乘积,替代原代码手动写4个累加项的冗余写法。
- 两种方式都能得到和原代码完全一致的结果,且扩展性更好。
内容的提问来源于stack exchange,提问作者RhinoCoder
相关产品推荐
相关产品推荐

