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笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。