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

C++程序问题:输入正浮点数,输入负整数时输出平均值

问题分析与修复

你的代码存在几个关键逻辑问题,导致不符合预期:

  1. 多余的for循环:这个for循环完全没必要,里面的break让它每次只执行一次,还把计数变量i局限在循环内部,没法累计有效输入的次数。
  2. 未过滤负数就累加:不管输入是正还是负,直接加到total里,导致负数被错误计入总和。
  3. 提前输出平均值:每次输入后就立刻计算并输出平均值,不符合“输入负数后才输出最终结果”的需求。
  4. 计数逻辑失效:i每次都被重新初始化为1,根本没法统计有效输入的数量。

修复后的代码

#include <iostream>
using namespace std;

int main() {
    float total = 0.0f;
    int count = 0;
    float input;

    do {
        cout << "Please input a number: ";
        cin >> input;
        // 只处理正浮点数
        if (input > 0) {
            total += input;
            count++;
        }
    } while (input >= 0); // 输入负数时退出循环

    // 避免除以0的情况(比如一开始就输入负数)
    if (count > 0) {
        float av_number = total / count;
        cout << "Average of positive numbers: " << av_number << endl;
    } else {
        cout << "No positive numbers entered." << endl;
    }

    return 0;
}

关键修正点

  • 移除了冗余的for循环,改用count变量统计有效输入的正浮点数数量,作用域在main函数内,能持续累计。
  • 增加了输入判断:只有当输入的数大于0时,才累加到总和并增加计数,彻底排除负数的干扰。
  • 调整输出时机:只在退出循环(输入负数)后,才计算并输出最终平均值,同时增加了空输入(无正数)的处理,避免除以0的运行时错误。
  • 简化了累加表达式:total += input比total = total += input更简洁且逻辑清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:35:23