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

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;
}

修正说明

  1. 初始化sum为0,避免垃圾值干扰计算
  2. 简化变量命名,只用num存储当前输入的数字,减少冗余变量
  3. 采用无限循环+break的逻辑,逻辑更清晰:每次输入后判断是否为0,是则退出循环,否则累加
  4. 使用整数类型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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:01:27