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; }
修正说明
- 新增
valid_count变量统计有效输入数量,处理无有效输入的边界场景 - 第一个有效输入单独赋值给差值、商值的初始值,后续输入执行连续减、连续除运算,符合常规计算逻辑
- 新增除0异常标识,避免程序出现运行错误,异常场景下会主动提示
内容的提问来源于stack exchange,提问作者s0mi
相关产品推荐
相关产品推荐

