第3章 C语言 循环程序设计
第3章 循环程序设计
本章重点
循环的概念
while及do-while循环的执行过程
while循环的应用
for循环的执行过程
for循环语句的变形及应用
循环的嵌套
3.1 循环的概念
循环是程序设计中非常常见的格式之一,所谓循环就是根据某个条件反复执行一系列指令。
3.2 while循环
while循环的格式为:
while(条件表达式)
{
循环
3.1 while循环
注意:程序中反复执行的一段程序被称为循环体,一般以{ }括起来。
例3.1 计算1+2+3+…….+99+100的和。
分析:计算1到100的和,是重复做100次加法,首先定义变量sum及用于循环变量i,每循环一次,做一次sum=sum+i运算,且循环变量i自增长1,当i增加到101时循环结束。程序流程图如图3.2所示。
i是这个循环结构的循环变量,以它来控制循环的继续或者退出。
图3.2 流程图
编辑源程序代码3-1.c
#include
int main( )
{
int i,sum=0;
i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
printf(“sum=%d\n”,sum);
return 0;
}
注意: 如果while中的循环体有二条以上的语句构成,用‘{’与‘}’构成一个程序块,while中的条件表达式后不能有‘;’号。
思考:求100+101+102+…+200的和。
例3.2 输出1到100之间的所有奇数。
图3.3 输出1到100的所有奇数流程图
编辑源程序代码3-2.c
#include
int main( )
{
int i=1;
while(i<=100)
{
printf("%4d " , i);
i+=2;
}
printf("\n");
return 0;
}
例3.3 求5!的值 (5!=1×2×3×4×5)。
分析:设乘积t的初始值为1,乘数项i的初试值也为1,每循环1次,i与t相乘,得到一个新的t,然后i的值增1,再与t相乘,如此反复直到i>5。退出循环后输出t即为所求值。流程图如图3.4所示。
图3.4 求5!的流程图
编辑源程序代码3-3.c
#include
int main( )
{
int i=1 , t=1 ;
while (i<=5)
{
t*= i ;
i++;
}
printf("5! =%d\n", t);
return 0;
}
例3.4 将求s=1+1/2+1/3+1/4+……+1/n,直到和s大于3为止,求此时的s与n的值。
分析:设置变量n,每循环1次n的值增1,s变量用来存放各数的和,当s的值大于3时,循环结束。因此在while条件里设置s<=3。流程图如图3.5所示。
图3.5 流程图
编辑源程序代码3-4.c
#include
int main( )
{
int n=1 ;
double s=0;
while (s<=3)
{
s+=1.0/n;
n++ ;
}
printf("s=%lf n=%d\n", s,n-1);
return 0;
}
模仿例3.4,求s=1-1/2+1/3-1/4+……的值,直到误差<0.00001
3.3 do-while循环
do~while循环是后判断循环,不论循环的条件是否满足,循环体至少应执行一次,do~while循环的语句格式为:
do
{
循环体
}while(表达式);
语句执行流程图如图3.6所示。
图3.6 语句执行流程图
例3.5 输入任意一个正整数,按低位开始输出它各个位置上的数字。例如:531输出135。
分析:先求出531除以10的余数,得到1;将531除以10得到53;再求53除以10的余数,得到3,将53除以10,得到5。这样将1,3,5全部分解出来。
执行步骤:设被除数m,余数n,进行下列运算:
(1) n=m%10;
(2) m=m/10;
(3) 循环的条件为m!=0。
流程图如图3.7所示。
图3.7 流程图
编辑源程序代码3-5.c
#include
int main( )
{
long m , n;
pringf(“请输入一个正整数:”);
scanf ("%ld",&m);
do
{
n=m%10 ;
m=m/10 ;
printf("%ld, ", n);
} while(m);
return 0;
}
3.4 for循环
C语言中的for循环语句应用比较灵活,虽然主要用于定数循环,但也可以不定数循