c语言中如何用do...while语句求1到100的累加和

来源:搜索优化作者:守望者头衔:草根站长
导读:本期聚焦于守望者创作的《c语言中如何用do...while语句求1到100的累加和》,敬请观看详情。do...while是C语言中一种独特的循环结构,它最大的特点是无论条件是否成立,循环体至少会执行一次。本文围绕用do...while语句计算1到100累加和这一经典入门题展开,先讲清楚do...while的基本语法和执行流程,再给出完整可运行的示例代码并逐行分析,重点说明为什么累加变量要初始化为0、循环变量从1开始自增的原因。文中还对比了do...while与while、for三种循环在解决同一问题时的差异,分析了do...while容易出错的几个细节,比如while后面的分号、死循环问题,并拓展了利用等差数列公式验证结果的方法,帮助初学者彻底掌握这个知识点。

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

c语言中如何用do...while语句求1到100的累加和

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

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260914/56362.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。