第五章循环结构 51 whilex语句和用 while语句构成的循环结构 51.1 while循环的一般形式 while循环的一般形式为: Whle表达式) 语句 ¤表达式是逻辑值。(即返回值为整型)。 ¤语句必须是一条语句,多条语句必须用复合语句
第五章 循环结构 5.1 while语句和用while语句构成的循环结构 while循环的一般形式为: while(表达式) 语句; ¤ 表达式是逻辑值。(即返回值为整型)。 ¤ 语句必须是一条语句,多条语句必须用复合语句。 5.1.1 while循环的一般形式
512 whille循环的执行过程 while循环表示当条件为真时,便执行语句(循环 体〕,直到条件为假才结束循环,并继续执行循环程 序外的后续语句。 maino i=1p=1 iint n, i=1; long p=1 输入n printf("input data n:In); 当i<=n scanf(“%d”,&n) p=p*2 while(i<=n) + p=p2;i++; printf("p=%d,p) 输出p
while循环表示当条件为真时, 便执行语句(循环 体〕,直到条件为假才结束循环,并继续执行循环程 序外的后续语句。 main( ) { int n, i=1 ; long p=1 ; printf(“input data n:\n”); scanf(“%d”,&n); while( i<=n ) { p=p*2; i++; } printf(“p=%ld”,p); } 5.1.2 while循环的执行过程 i=1,p=1 输入n 当i<=n p=p*2 i++ 输出p
512 whille循环的执行过程 注意: 1. while循环总是在循环的开始检验条件,即先判断, 后执行这就意味着循环可能一次也不执行就退出。 2语句可以是语句体,此时必须用"{"和"y"括起来,构 成复合语句 3.循环体中应有使循环趋向于结束的语句,否则将出 现死循环。 如:whe(1) printf((“why?); 4. while的循环体可以是空语句
注意: 1. while循环总是在循环的开始检验条件, 即先判断, 后执行这就意味着循环可能一次也不执行就退出。 2. 语句可以是语句体, 此时必须用"{"和"}"括起来,构 成复合语句。 3. 循环体中应有使循环趋向于结束的语句,否则将出 现死循环。 如: while (1) printf(“why?”); 4. while的循环体可以是空语句。 5.1.2 while循环的执行过程
5.2do -whilewhile-语句和用do-语句构成的循环结 构 5.2.1do- while语句构成的循环结构 do -while-循环的一般格式为: do 语句; while(表达式) ¤表达式是逻辑值。(即返回值为整型)。 ¤语句必须是一条语句,多条语句必须用复合语句。 ¤do是C语言的关键字,必须与 while联合使用
do-while 循环的一般格式为: do 语句; while(表达式); ¤ 表达式是逻辑值。(即返回值为整型)。 ¤ 语句必须是一条语句,多条语句必须用复合语句。 ¤ do是C语言的关键字,必须与while联合使用。 5.2.1 do-while语句构成的循环结构 5.2 do-while语句和用do-while语句构成的循环结 构
522 do-whille循环的执行过程 先执行循环中的语句,然后再判断条件是否为真, 如果为真则继续循环;如果为假,则终止循环。因此, do-while循环至少要执行一次循环语句。 ¤当有许多语句参加循环时,要用{"和"y"把它们括起 来。一般最好将do- while语句的循环体用“{”和“}” 括起来。 n与whie循环的区别在于:先执行,后判断。当第一次 执行时,若判断条件为假,则 do-while只执行一次循环 语句而whe一次也不执行
先执行循环中的语句, 然后再判断条件是否为真, 如果为真则继续循环; 如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。 ¤当有许多语句参加循环时, 要用"{"和"}"把它们括起 来。一般最好将do-while语句的循环体用“{”和“}” 括起来。 ¤与while循环的区别在于: 先执行,后判断。当第一次 执行时,若判断条件为假,则do-while只执行一次循环 语句,而while一次也不执行。 5.2.2 do-while循环的执行过程
522 do-whille循环的执行过程 while和 do-while循环的比较 例如:求s=1+2+3+4.+100 (1)maino (2 maino iint sum=0,i=1 fint sum=0, i=1 while(i<=100) do Isum=sum+i; isum=sum+ +十 ](i<=100); printf("%d\n",sum) printf("‰dn",sum)
while和do-while循环的比较 例如: 求 s=1+2+3+4…+100 (1) main() (2) main() { int sum=0,i=1; { int sum=0,i=1; while(i<=100) do { sum=sum+i; { sum=sum+i; i++; i++; } }while(i<=100); printf("%d\n",sum); printf("%d\n",sum); } } 5.2.2 do-while循环的执行过程
5.3for语句和用for语句构成的循环结构 5.3.1for语句构成的循环结构 for语句的一般形式为: for(表达式1;表过式2;表达式3) 语句; 各表达式之间用“;”隔开 循环体中的语句可以是复合语句,用大括号括起来
for语句的一般形式为: for(表达式1; 表过式2; 表达式3) 语句; ¤各表达式之间用“;”隔开 ¤循环体中的语句可以是复合语句,用大括号括起来。 5.3.1 for语句构成的循环结构 5.3 for语句和用for语句构成的循环结构
53.2for循环的执行过程 首先计算表达式1, 计算表达式1 接着执行表达式2,若表 达式2的值不等于0 0(假) (真),则执行语句, 求表达式2值 接着计算表达式3,再判 断表达式2的值。依此重 (真) 复下去,直到表达式2的 语句 值等于(假)。 例如:求1+2+…+100 计算表达式3 =1;sum=0 for(i=1;i<=100;+) sum += l
首先计算表达式1, 接着执行表达式2,若表 达式2的值不等于0 (真),则执行语句, 接着计算表达式3,再判 断表达式2的值。依此重 复下去,直到表达式2的 值等于(假)。 例如: 求1+2+...+100 i=1;sum=0; for(i=1; i<=100; i++) sum += i; 5.3.2 for循环的执行过程 计算表达式1 语 句 计算表达式3 求表达式2值 =0(假) 0(真)
533有关for语句的说明 .for循环中的“表达式1”、“表达式2”和“表达式3” 都是可选项,即可以缺省,但“;不能缺省。 *省略表达式1,表示不对循环控制变量赋初值。 *省略表达式2,则不做其它处理时便成为死循环。 省略表达式3,则不对循环控制变量进行操作,这时 可在语句体中加入修改循环控制变量的语句,来保证循 环正常结束。如上例可写为: =1;sum=0; for(;i<=100;) i sum+=i; ;}
1. for循环中的“表达式1” 、 “表达式2”和“表达式3” 都是可选项, 即可以缺省, 但“;”不能缺省。 *省略表达式1, 表示不对循环控制变量赋初值。 *省略表达式2, 则不做其它处理时便成为死循环。 *省略表达式3, 则不对循环控制变量进行操作, 这时 可在语句体中加入修改循环控制变量的语句,来保证循 环正常结束。如上例可写为: i=1;sum=0; for(; i<=100 ; ) { sum+=i; i++; } 5.3.3 有关for语句的说明
533有关for语句的说明 2.for语句中表达式1也可是与循环控制变量无关的表 达式;表达式1和表达式3可为简单表达式,也可为逗 号表达式。 例1:for(um=0,i1;=100;计++) sum +E I 例2:for(i=0,j=100;可;+,j)k=+j; 例3:for(i=1;<=100;++,++)sum=sum+i 均等价于for(i=;i<=100;=+2)sum=sum+i
2. for语句中表达式1也可是与循环控制变量无关的表 达式;表达式1和表达式3可为简单表达式,也可为逗 号表达式。 例1: for(sum=0, i=1; i<=100; i++) sum += i; 例2: for(i=0, j=100 ; i<=j ; i++, j - -) k=i+j; 例3: for(i=1;i<=100;i++,i++) sum=sum+i; 均等价于 for(i=1;i<=100;i=i+2) sum=sum+i; 5.3.3 有关for语句的说明