首页 > 编程笔记

C语言while和do while循环语句的用法(图解)

C语言中有三种循环结构,分别是 while 循环、do while 循环和 for 循环。本文我们来介绍 while 和 do while 循环,想了解 for 循环的读者请转到:C语言for循环语句的用法

C语言 while 语句

C语言 while 语句用来实现当型循环,即先判断循环条件,再执行循环体。其一般语法格式为:

while (表达式)
    循环体语句;

它的执行过程是,当表达式为非 0(真)时,执行循环体语句,然后重复上述过程,一直到表达式为 0(假)时,while语句结束。

请看下面的例子:
i=0;
while(i<=100)
{
    sum+=i;
    i++;
}
几点说明:

示例

求数列 1/2、2/3、3/4…… 前 20 项的和。
#include <stdio.h>
int main()
{
    int i;  /*定义整型变量i用于存放整型数据*/
    double sum=0;  /*定义浮点型变量sum用于存放累加和*/
    i=1;  /*给循环变量赋初值*/
    while(i<=20)  /*循环的终止条件是i<=20*/
    {
        sum=sum+i/(i+1.0); /*每次把新值加到sum中*/
        i++;  /*循环变量自增,此句一定要有*/
    }
    printf("该数列前20项的和为:%f\n",sum);

    return 0;
}
运行结果:
该数列前20项的和为:17.354641

本范例中的数列可以写成通项式:n/(n+1),n=1,2,…,20,n 从 1 循环到 20,计算每次得到当前项的值,然后加到 sum 中即可求出。

与 for 不同的是,while 必须在循环之前设置循环变量的初值,在循环中有改变循环变量的语句存在;for 语句是在“表达式1”处设置循环变量的初值,在“表达式3”处进行循环变量的增值。

C语言 do while 语句

C语言 do while 语句实现的是先执行循环体语句,后判断条件表达式的循环。其一般的语法格式为:

do
{
    循环体语句;
}while (表达式);

它的执行过程是,先执行一次循环体语句,然后判断表达式是否为非 0(真);如果为真,则再次执行循环体语句。如此反复,一直到表达式的值等于 0(假)时,循环结束。

下图展示了 do-while 语句的流程:
C语言do while循环语句执行流程

几点说明:

示例

计算两个数的最大公约数。
#include  <stdio.h>
int main( )
{
    int m,n,r,t;
    int m1,n1;
    printf("请输入第1个数:");
    scanf("%d",&m);  /*由用户输入第1个数*/
    printf("\n请输入第2个数:");
    scanf("%d",&n);  /*由用户输入第2个数*/
    m1=m;  n1=n;  /*保存原始数据供输出使用*/

    if(m<n){  /*m,n交换值,使m存放大值,n 存放小值*/
        t=m;
        m=n;
        n=t;
    }

    do /*使用辗转相除法求得最大公约数*/
    {
        r=m%n;
        m=n;
        n=r;
    }while(r!=0);

    printf("%d和%d的最大公约数是%d\n",m1,n1,m);

    return 0;
}
运行结果:

请输入第1个数:7

请输入第2个数:31
7和31的最大公约数是1


范例中,求两个数的最大公约数采用“辗转相除法”,具体方法如下:
由于在求解过程中,m 和 n 已经发生了变化,所以要将它们保存在另外两个变量 m1 和 n1 中,以便输出时可以显示这两个原始数据。

如果要求两个数的最小公倍数,只需要将两个数相乘再除以最大公约数,即 m1*n1/m 即可。

优秀文章