求1到100的累加和是C语言初学者几乎必做的一道练习题,它虽然简单,却能完整地展示循环结构的工作方式。C语言提供了while、for、do...while三种循环语句,其中do...while的使用频率相对较低,但它的执行特性很有意思:循环体先执行一次,然后才判断条件。本文就以这道题为例,详细讲解如何用do...while语句实现累加求和,并对比它和其他循环的差别。

do...while语句的语法与执行流程
do...while语句的标准形式是:先写关键字do,后面跟一对花括号包裹的循环体,然后是while关键字和一对圆括号括起来的循环条件,最后必须以分号结尾。它的执行顺序和while刚好相反:程序进入循环后,会先无条件执行一遍循环体,再计算while后面括号里的条件表达式。如果条件为真,就回到循环体开头继续执行;如果条件为假,就退出循环。
这个"先执行后判断"的特性意味着,哪怕条件一开始就不成立,循环体也会被执行一次。举个例子,假如循环条件写成i > 200且i初始值为1,do...while依然会把循环体跑一遍才停下来。这是它和while最本质的区别,while在条件为假时一次都不会执行。
还需要特别注意while括号后面的那个分号。很多初学者会漏写它,编译器会报语法错误;也有人误加在do后面,同样会出问题。正确的写法是把分号紧跟在while的右括号后面,这是do...while语句结束的标志。
用do...while求1到100累加和的完整代码
思路很直接:定义一个累加器变量sum用来存结果,定义一个循环变量i从1开始,每次循环把i加到sum上,然后i自增1,直到i超过100为止。完整代码如下:
#include <stdio.h>
int main(void)
{
int i = 1; /* 循环变量,从1开始 */
int sum = 0; /* 累加器,必须初始化为0 */
do
{
sum = sum + i; /* 把当前的i累加到sum中 */
i++; /* i每次加1 */
} while (i <= 100); /* 条件:i不超过100就继续循环 */
printf("1到100的累加和为:%d\n", sum);
return 0;
}程序运行后会输出5050,这正是1加到100的正确结果。代码中有两个细节值得强调。第一,sum必须初始化为0,因为局部变量不初始化时值是随机的,如果sum一开始是个垃圾值,最后的结果就完全错了。第二,i的初值设为1,循环条件是i <= 100,这样i会依次取1、2、3一直到100,共执行100次循环。如果把条件写成i < 100,就会漏加100,结果变成4950。
另外,sum = sum + i也可以简写成sum += i,两者完全等价,后者更简洁,在实际开发中用得更多。循环体内两条语句的顺序也有讲究:先累加再自增,如果反过来先让i自增,那么第一次加进去的就是2而不是1,结果会多出100、少掉1,变成5149。
do...while与while、for三种循环的对比
同一个问题用三种循环都能解决,但写法和适用场景不同。用while实现的版本如下:
int i = 1;
int sum = 0;
while (i <= 100)
{
sum += i;
i++;
}用for实现的版本则把初始化、条件、步进都集中在一行里:
int i;
int sum = 0;
for (i = 1; i <= 100; i++)
{
sum += i;
}三者的核心区别在于:while和for都是"先判断后执行",如果条件一开始就不成立,循环体一次都不跑;而do...while是"先执行后判断",循环体至少跑一次。因此do...while特别适合那些无论条件如何都必须先做一次的场景,比如菜单程序中先显示菜单再判断用户输入、输入校验中先读一次数据再决定是否重输。对于1到100求和这种明确知道循环次数的问题,for写法最紧凑直观,但在学习阶段用do...while实现一遍,有助于理解循环的控制机制。
常见错误与结果验证技巧
初学者写do...while时经常犯这几类错误。一是忘记while后面的分号,编译时报错却找不到原因。二是循环体内忘记写i++,导致i永远是1,条件永远成立,程序陷入死循环。三是把累加语句和自增语句的顺序弄反,导致结果偏差。四是把sum定义成int却没有考虑范围,好在1到100的和是5050,远小于int的取值上限,不会溢出,但如果题目改成求1到100000的和,就需要换用long long类型来保存结果。
验证结果是否正确,除了人工加一遍,还可以借助数学公式。根据等差数列求和公式,1加到100等于100乘以101再除以2,结果正好是5050。写代码时可以同时用公式法算一遍,两种方法结果一致就说明循环逻辑没问题:
#include <stdio.h>
int main(void)
{
int sum = 0;
int formula = 100 * 101 / 2; /* 公式法验证 */
int i = 1;
do
{
sum += i;
i++;
} while (i <= 100);
printf("循环结果:%d,公式结果:%d\n", sum, formula);
return 0;
}掌握了这道题,就等于掌握了do...while的基本用法。后续可以尝试改造程序,比如改成求1到n的累加和(n由用户输入),或者只累加偶数、奇数,这些变式练习能进一步巩固对循环条件的理解和运用。
do...while循环C语言累加和循环语句修改时间:2026-09-14 01:04:43