C语言需求:实现输入数字直至输入0,计算并输出所有输入数字总和
问题修正:读取数字求和直至输入0
需求与期望效果
需求:读取用户输入的数字,直至输入0为止,计算并输出所有输入数字的总和。
期望运行效果:Enter n: 50 Enter n: 25 Enter n: 10 Enter n: 0 total=85
原代码的问题
sum未初始化,直接参与计算会得到错误的垃圾值tem未初始化,while循环的tem>0判断属于未定义行为- 逻辑混乱:第一次输入的
ye没有正确加入总和,循环内累加的tem最终也没参与到最终输出的sum中 - 循环条件错误:应该判断当前输入的数字是否为0,而非
ye>0 || tem>0 - 输出格式不符:
%f会输出小数形式,不符合期望的整数格式
修正后的代码(整数版本,更贴合需求)
#include <stdio.h> int main() { int num, sum = 0; while (1) { printf("Enter n: "); scanf("%d", &num); if (num == 0) { break; // 输入0时终止循环 } sum += num; // 将非0数字加入总和 } printf("total=%d\n", sum); return 0; }
修正说明
- 初始化
sum为0,避免垃圾值干扰计算 - 简化变量命名,只用
num存储当前输入的数字,减少冗余变量 - 采用无限循环+break的逻辑,逻辑更清晰:每次输入后判断是否为0,是则退出循环,否则累加
- 使用整数类型
int匹配输入的整数场景,输出用%d直接得到整数格式的结果
如果需要支持浮点数输入,可使用以下版本:
#include <stdio.h> int main() { float num, sum = 0.0; while (1) { printf("Enter n: "); scanf("%f", &num); if (num == 0.0) { break; } sum += num; } printf("total=%.0f\n", sum); // 按整数格式输出浮点数总和 return 0; }
内容的提问来源于stack exchange,提问作者Jase
相关产品推荐
相关产品推荐

