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

如何使用Do While控制循环停止?C语言累加程序输入0终止问题求助

错误点梳理
  • 循环条件逻辑写反:do-while的判断条件为t == 0,你初始化t=1,第一次循环结束后判断条件不成立,直接退出循环,自然无法实现连续输入累加的效果,也触发不了输入0终止的逻辑。
  • 语法冗余:while语句末尾多了不必要的分号,后续跟随的{return 0;}是独立的冗余代码块,不参与循环逻辑。
  • 潜在逻辑缺陷:当前代码会将作为终止信号的0也累加到总和中,不符合常规的输入0即停止、不计入统计的需求。
修正后代码(0不计入总和版本,符合常规需求)
#include <stdio.h>

int main(){
    int n, summa, t;
    summa = 0;
    t = 1;
    do{
        scanf("%d", &n);
        if(n == 0){
            t = 0;
            break; // 直接跳出循环,不执行后续累加打印
        }
        summa = n + summa;
        printf("%d\n", summa);
    } while(t == 1); // 修正循环条件,t为1时继续循环
    return 0;
}
如果你需要将终止的0也计入总和,可以使用以下版本
#include <stdio.h>

int main(){
    int n, summa, t;
    summa = 0;
    t = 1;
    do{
        scanf("%d", &n);
        if(n == 0){
            t = 0;
        }
        summa = n + summa;
        printf("%d\n", summa);
    } while(t == 1); // 仅修正循环条件即可
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:06:04