You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:10:40