如何使用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
相关产品推荐
相关产品推荐

