1、第3章 程序结构和 流程控制语句,3.3 循环语句,可以设两个变量,一个变量代表被加数,一个变量代表加数。且直接将每一步骤的和放在被加数变量中。今设p为被加数,i为加数。用循环算法来求结果。可以将算法改写如下: S1: 使p=0 S2: 使i=1 S3: 使p+i,和仍放在变量p中,表示为 p+ip S4: 使i的值加1,即i+1 i S5: 如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则,算法结束。最后得到p的值就是1+2+n的值。,引例 求1+2+3+4+5+10。,如果题目改为求: 1+3+5+7+9+11 1+3+5+2n-1 2+4+6+2n,算法只需作很少的改动
2、即可:,S1: p=0 S2: i=1 S3: p = p+i S4: i = i+2 S5: 若i11,返回S3; 否则,结束。,S3到S5组成一个循环,,注意:循环结束的条件,程序改成求阶乘 12345(即5!),关键是变量设置及其初始值 今设p为被乘数,i为乘数。用循环算法来求结果。可以将算法改写如下:,S1: p=1 S2: i=2 S3: p = p*i S4: i = i+1 S5: 若i5,返回S3; 否则,结束。,这里的p初值有何不同?,所谓循环结构就是在给定条件成立的情况下,重复执行一个程序段;当给定条件不成立时,退出循环,再执行循环下面的程序。实现循环结构的语句称为循环语句
3、。在C+中,循环语句有while语句、dowhile语句和for语句。,3.3.1 while语句,(1)作用:实现“当型”循环结构。(2)格式:while ()(3)执行过程:先计算表达式的值,当表达式的值为非0时,重复执行指定的语句;当表达式的值为0时,结束循环。,例3.9 用while语句计算: S=1+2+3+4+n。,#include void main()int i,n,sum=0;coutn;i=1;while (i=n) sum=sum+i; i+; cout“sum=“sumendl; ,例3.10 用while语句计算T=n!, 即求连乘积:T=1234n。,#includ
4、e void main() int i,n;float t; coutn;t=1.0;i=1;while (i=n) t=t*i; i+; cout“t=“tendl; ,3.3.2 dowhile语句,(1)作用:实现“直到型”循环结构。(2)格式:dowhile (); (3)执行过程:先执行语句,然后计算 表达式的值,当表达式的值 为非0时, 就重复执行指定 的语句;当表达式的值为0时, 结束循环。,例3.11 用dowhile语句计算S=1+2+3+4+n。,#include void main() int i,n,sum;coutn;sum=0;i=1;do sum=sum+i;i+
5、;while (i=n);cout“sum=“sumendl; ,例3.12 用dowhile语句计算T=n!,即求连乘积:T=1234n。,#include void main() int i,n;float t;coutn;t=1.0; i=1;do t=t*i; i+; while (i=n);cout“t=“tendl; ,#include void main(void) int n, r, m = 0; cout n;do r = n % 10;m = m*10+ r;n /= 10; while (n != 0);cout m endl; ,12,读程序,说出其功能。,输入一个整数
6、,将各位数字反转后输出。,3.3.3 for语句,1.for语句格式:for (; )2.for语句的执行过程:,for(循环变量赋初值;循环条件;循环变量增量) 语句,例3.13用for 语句计算: S=1+2+3+4+n。,#include void main(void) int i,n,sum;coutn;sum=0;for (i=1;i=n;i+)sum=sum+i;cout“sum=“sumendl; ,例3.14用for 语句计算T=n!,即求T=1234n。,#include void main() int i,n;float t;coutn;t=1.0;for (i=1;i=n
7、;i+) t=t*i;cout“t=“tendl; ,【例3.15 】计算S = 即求:,#include void main(void) int i;float t,sum;sum=0;for (i=1;i=20;i+) t=1.0/(i*(i+1);sum=sum+t;cout“S=“sumendl; ,3.3.4 三种循环语句的比较,(1)while与for语句为先判断后执行(当型:可能一次也不执行循环体);dowhile语句是先执行后判断(直到型:循环体至少执行一次)。 (2)三种语句都是循环条件为真时执行循环体,为假时结束循环。 (3)在循环体至少执行一次的情况下,三种循环语句构成的
8、循环结构可以相互转换。实际上,用得最多的是for语句,执行效率最高;其次是while语句,而dowhile语句相对于前两种语句则用得较少。,思考:,读入一系列整数,统计出正整数个数和负整数个数,读入0则结束。 分析:需要读入一系列整数,但是整数个数不定,要在每次读入之后进行判断,因此使用while循环最为合适。将读入的数存于变量n中,循环控制条件应该是n!=0。由于要判断数的正负并分别进行统计,所以需要在循环内部嵌入选择结构。,#include void main() int i=0, j=0, n;coutn;while( n!=0 ) if(n0) i+;if(nn ;cout“正整数个数:“i“ n负整数个数:“jendl; ,20,思考:循环控制条件应该是n!=0。,本堂课小结: 1、循环语句有哪几种? 2、循环体语句可以由那些语句组成? 3、当型循环和直到型循环语句是否可以互换?什么情况下会不同? 4、for循环语句中的两个分号可以省略吗? 5、for语句中的各个组成部分是起什么作用? 6、循环控制变量一般是用什么类型的变量? 7、在三种语句结构中如何改变循环控制变量?,作业: 3.19、3.20、3.23,