C语言while和do while循环语句的用法(图解)
C语言中有三种循环结构,分别是 while 循环、do while 循环和 for 循环。本文我们来介绍 while 和 do while 循环,想了解 for 循环的读者请转到:C语言for循环语句的用法
请看下面的例子:
该数列前20项的和为:17.354641
本范例中的数列可以写成通项式:n/(n+1),n=1,2,…,20,n 从 1 循环到 20,计算每次得到当前项的值,然后加到 sum 中即可求出。
与 for 不同的是,while 必须在循环之前设置循环变量的初值,在循环中有改变循环变量的语句存在;for 语句是在“表达式1”处设置循环变量的初值,在“表达式3”处进行循环变量的增值。
下图展示了 do-while 语句的流程:
几点说明:
范例中,求两个数的最大公约数采用“辗转相除法”,具体方法如下:
由于在求解过程中,m 和 n 已经发生了变化,所以要将它们保存在另外两个变量 m1 和 n1 中,以便输出时可以显示这两个原始数据。
如果要求两个数的最小公倍数,只需要将两个数相乘再除以最大公约数,即 m1*n1/m 即可。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
C语言 while 语句
C语言 while 语句用来实现当型循环,即先判断循环条件,再执行循环体。其一般语法格式为:
while (表达式)
循环体语句;
请看下面的例子:
i=0; while(i<=100) { sum+=i; i++; }几点说明:
- 循环体包含一条以上语句时,应用“{}”括起来,以复合语句的形式出现,否则它只认为 while 后面的第 1 条语句是循环体;
- 循环前,必须给循环控制变量赋初值,如上例中的“i=0;”;
- 循环体中,必须有改变循环控制变量值的语句(使循环趋向结束的语句),如上例中的“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 (表达式);
下图展示了 do-while 语句的流程:

几点说明:
- do-while 语句是先执行循环体“语句”,后判别循环终止条件。与 while 语句不同,二者的区别在于,当 while 后面的表达式一开始的值为 0(假)时,while 语句的循环体一次也不执行,而 do-while 语句的循环体至少要执行一次。
- 在书写格式上,循环体部分要用花括号括起来,即使只有一条语句也如此;do-while 语句最后以分号结束。
- 通常情况下,do-while 语句是从 while 后面控制表达式退出循环。但它也可以构成无限循环,此时要利用 break 语句直接跳出循环。
示例
计算两个数的最大公约数。#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。
- 将 m 作被除数,n 作除数,相除后余数为 r。
- 将 n 赋值给 m,r 赋值给 n。
- 若 r=0,则 m 为最大公约数,结束循环。若 r≠0,执行步骤②和③。
由于在求解过程中,m 和 n 已经发生了变化,所以要将它们保存在另外两个变量 m1 和 n1 中,以便输出时可以显示这两个原始数据。
如果要求两个数的最小公倍数,只需要将两个数相乘再除以最大公约数,即 m1*n1/m 即可。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。