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

C++程序计算用户输入数值平均值结果始终为0问题排查

问题原因定位
  • 循环越界取数导致计算分子恒为0:输入价格的for循环执行结束后,循环变量i的值已经自增到等于输入的价格个数n(循环满足执行的最后一轮对应i = n-1,执行完循环体后i会自增1变成n)。此时代码执行PrzVar = Prices[i],取到的是数组索引为n位置的元素——由于数组初始化时所有元素都被预置为0,这个值和用户实际输入的价格完全无关,计算时分子恒为0,最终输出自然始终是0。
  • 核心逻辑缺失:代码完全没有实现多组数值累加求和的步骤,仅单独取了一个错误位置的数组元素参与运算,不满足平均值计算的基本逻辑。
  • 变量类型设计不合理:存储平均值的变量Avr被定义为int整型,就算累加逻辑修正完成,用整型存储带小数的价格平均值会出现严重的精度截断,小数值场景下甚至会直接被截断为0。
修正实现

修正思路

  1. 新增浮点型累加变量,在逐个输入价格的循环过程中同步累加所有输入的价格值,替换原有错误的单值取数逻辑
  2. 将存储平均值的变量调整为float浮点类型,适配价格类数值的小数计算需求
  3. 按照“总价格 / 价格个数”的逻辑计算平均值,替换原有错误的单值除法逻辑

修正后完整代码

#include<iostream>
using namespace std;

int main() {
    float Prices[10] = {0};
    int n, i;
    float totalPrice = 0;
    float average = 0;

    // 循环校验输入的价格数量是否在1-10的允许范围内
    do {
        cout << "Inserire la quantit" << (char)133 << " di prezzi di cui fare la media: ";
        cin >> n;
    } while (n < 1 || n > 10);

    // 逐个输入价格并完成累加
    for (i = 0; i < n; i++) {
        cout << "Inserire il " << i + 1 << (char)167 << " prezzo: ";
        cin >> Prices[i];
        totalPrice += Prices[i];
    }

    // 计算并输出平均值
    average = totalPrice / n;
    cout << "La media dei prezzi inseriti corrisponde a: " << average;

    return 0;
}

内容的提问来源于stack exchange,提问作者Simon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 00:36:04