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

C语言循环输入多个数字时如何正确计算差值及和差积商

C语言多数字四则运算程序修正方案

现有代码问题

  • 差值计算逻辑错误:原有代码每次循环直接将difference赋值为当前输入值,最终仅会输出最后一次输入的有效正数,未执行连续减法逻辑
  • 商值计算逻辑错误:原有代码quotient = number / quotient的运算顺序颠倒,不符合常规的多数字连续除法逻辑
  • 缺少边界判断:未处理无有效输入、有效输入数量为1的兼容场景,以及除法过程中除数为0的运行异常

常规多数字运算规则约定

对于输入的有效数字序列n1、n2、n3...nk,默认运算规则如下:

和:n1 + n2 + n3 + ... + nk
差:n1 - n2 - n3 - ... - nk
积:n1 * n2 * n3 * ... * nk
商:n1 / n2 / n3 / ... / nk

修正后完整代码

#include <stdio.h>

int main() {
    int i, valid_count = 0;
    double number, sum = 0.0, difference = 0, product = 1, quotient = 1;
    int div_zero_error = 0;

    for (i = 1; i <= 10; ++i) {
        printf("Enter n%d: ", i);
        scanf("%lf", &number);

        // 输入负数直接终止输入
        if (number < 0.0) {
            break;
        }
        valid_count++;
        sum += number;
        product *= number;

        // 第一个有效数字初始化差、商的初始值
        if (valid_count == 1) {
            difference = number;
            quotient = number;
        } else {
            difference -= number;
            // 除数为0异常判断
            if (number == 0) {
                div_zero_error = 1;
            } else if (!div_zero_error) {
                quotient /= number;
            }
        }
    }

    if (valid_count == 0) {
        printf("未输入任何有效正数字\n");
        return 0;
    }

    printf("Sum = %.2lf", sum);
    printf("\nDifference = %.2lf", difference);
    printf("\nProduct = %.2lf", product);
    if (div_zero_error) {
        printf("\nQuotient = 计算异常,存在除数为0的输入");
    } else {
        printf("\nQuotient = %.2lf", quotient);
    }

    return 0;
}

修正说明

  1. 新增valid_count变量统计有效输入数量,处理无有效输入的边界场景
  2. 第一个有效输入单独赋值给差值、商值的初始值,后续输入执行连续减、连续除运算,符合常规计算逻辑
  3. 新增除0异常标识,避免程序出现运行错误,异常场景下会主动提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:09:01