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

C语言程序计算非0整数最值、均值、乘积时的错误修复求助

问题分析与修复方案

你的代码里0并没有被纳入计算——因为while循环的条件已经限定了number != 0,循环体内永远不会处理0值。真正的问题出在变量初始化和首次输入的处理逻辑上:

核心错误点

  • max/min初始化错误:你把max_value和min_value初始为0,若输入全是负数,所有数都小于0,number > max_value永远不成立,max会一直停留在0;同理全输入正数时min也会保持0,导致结果完全错误。
  • 乘积初始化错误:product_values初始为0,任何数乘以0都是0,最终乘积结果永远是0,完全不符合需求。
  • 冗余代码:循环里的if (number == 0) { continue; }完全多余,因为循环条件已经过滤了0,这段代码永远不会执行。

修复后的代码

#include <stdio.h>

int main() {
    int max_value, min_value, sum_values, product_values, count;
    // 仅初始化计数和求和变量为0,其余值等待首次有效输入再赋值
    count = sum_values = 0;

    int number;
    // 先读取输入,再判断是否终止
    while (scanf("%d", &number) == 1) {
        if (number == 0) {
            break; // 输入0直接终止循环
        }

        if (count == 0) {
            // 首次输入非0数,用该数初始化max、min、乘积
            max_value = min_value = product_values = number;
            sum_values = number;
            count = 1;
        } else {
            // 后续输入的处理逻辑
            if (number > max_value) {
                max_value = number;
            }
            if (number < min_value) {
                min_value = number;
            }
            sum_values += number;
            product_values *= number;
            count++;
        }
    }

    if (count > 0) {
        float average_value = (float)sum_values / count;
        printf("Max value: %d\n", max_value);
        printf("Min value: %d\n", min_value);
        printf("Average value: %.2f\n", average_value);
        printf("Product value: %d\n", product_values);
    } else {
        printf("Error: No non-zero inputs\n");
    }

    return 0;
}

关键改动说明

  1. 调整初始化逻辑:仅初始化count和sum_values为0,max、min、product在首次输入非0数时赋值为该数,确保初始值是有效输入的一部分。
  2. 重构循环结构:先读取输入,遇到0直接break终止循环,避免原循环条件带来的逻辑混淆。
  3. 移除冗余代码:删掉了永远不会执行的if (number == 0) { continue; }。
  4. 延迟计算平均值:把平均值计算放到count > 0的判断里,避免count为0时出现除以0的未定义行为。

内容的提问来源于stack exchange,提问作者Xuân Trường Phạm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:30:05