
5.4do~while语句 一般形式: do 循环体语句; while(表达式), 必执行流程: do 循环体 真(非0) while expr 假(0)
5.4 do~while语句 ❖一般形式: do 循环体语句; while(表达式); ❖执行流程: do 循环体 expr 假(0) 真(非0) while

公特点:先执行循环体,后判断表达式 冬说明: ●至少执行一次循环体 ●do~while可转化成while结构 do 循环体 生see中卡卡s●AA00◆非卡s88年专5 While循环 假(0) 循环体 expr while 真(非0) 真(非0) expr 循环体 假(0) “.+◆专专
❖特点:先执行循环体,后判断表达式 ❖说明: ⚫至少执行一次循环体 ⚫do~while可转化成while结构 expr 循环体 假(0) 真(非0) 循环体 While循环 do 循环体 expr 假(0) 真(非0) while

100 例用do-whie循环求∑ n =1 main() int i,sum=0; i=1; do sum+=i; 计+; }while(i<=100); printf("%od",sum);
例 用do~while循环求 main() { int i,sum=0; i=1; do { sum+=i; i++; }while(i<=100); printf("%d",sum); }

例while和do~while比较 mainO main( int i,sum=0; 循环前的 int i,sum=0; scanf("%d",&i); 初始值 scanf("%d",&i); while(i<=10) do {sum+= 循环体 { sum+=i; 计+; 内必须 改变循 i计+; 环条件 }while(i<=10): printf("y%d",sum)入 表达式 printf("%d",sum); 第一次 是否值 为真 确定循环体 循环结构设计思路: 循环条件 初值 控制循环 改变循环变量值 终值 值的改变
例 while和do~while比较 main() { int i,sum=0; scanf("%d",&i); do { sum+=i; i++; }while(i<=10); printf("%d",sum); } main() { int i,sum=0; scanf("%d",&i); while(i<=10) { sum+=i; i++; } printf("%d",sum); } 循环结构设计思路: 确定循环体 控制循环 循环条件 改变循环变量值 初值 终值 值的改变 循环前的 初始值 循环体 内必须 改变循 环条件 表达式 第一次 是否值 为真

5.3for语句 一般形式: for([expr1];expr2];expr3]) 循环体语句; 》执行流程: for exprl 假(0) expr2 真(非0) 循环体 expr3
5.3 for语句 ❖一般形式: for([expr1] ;[ expr2] ;[ expr3]) 循环体语句; ❖执行流程: expr2 循环体 假(0) 真(非0) for expr1 expr3

f0r语句一般应用形式: for(循环变量赋初值;循环条件;循环变量增值 循环体语句; 必说明: 100 例求xpe冲r2,eXpr3类型任意,都可省略,但分 号:不可省 n= mainO) int i,sum=0; hile结构 for(i=1;i<=100;i++) exprl; sum+=i; while(expr2) printf("%d",sum); 循环体语句; expr3;
❖for语句一般应用形式: for(循环变量赋初值;循环条件;循环变量增值) { 循环体语句; } ❖说明: ⚫for语句中expr1, expr2 ,expr3 类型任意,都可省略,但分 号;不可省 ⚫无限循环: for(;;) ⚫for语句可以转换成while结构 expr1; while(expr2) { 循环体语句; expr3; } 例 用for循环求 main() { int i,sum=0; for(i=1;i<=100;i++) sum+=i; printf("%d",sum); }

例.编程序求出所有的水仙花数。所谓水仙花数,是一个3 位正整数,其各位数字的立方之和等于该数本身。例如, 153是一个水仙花数,因为153=13+53+33。 #include mainO fint x,a,b,c; for(x=100;x<=999;x++) { a=x/100; /*分离出x的百位数*/ b=x%100/10;/*分离出x的十位数*/ c=x%10; /*分离出x的个位数*/ if(a*a*a+b*b*b+c*c*c==x) printf(("%d是水仙花数n",x;
例. 编程序求出所有的水仙花数。所谓水仙花数,是一个3 位正整数,其各位数字的立方之和等于该数本身。例如, 153是一个水仙花数,因为153=13+53+33 。 #include main() {int x,a,b,c; for(x=100;x<=999;x++) { a=x/100; /*分离出x的百位数*/ b=x%100/10; /*分离出x的十位数*/ c=x%10; /*分离出x的个位数*/ if(a*a*a+b*b*b+c*c*c==x) printf("%d是水仙花数\n",x); } }

三种循环的比较 1、3种循环可相互代替,不提倡用g0t0语包 2、循环变量初始化:在while,d0 while之前初始化; f0r语句表达式1中初始化。 3、1 循环控制条件和循环变量值的改变的语句 循环发童初始化 也可在for前 while(表达式) do语句 for(表达式1;表达式2;表达式3) 语句 while(表达式 语句 循环控制条件 也可在循环体内 修改循环赏萱
三种循环的比较 1、3种循环可相互代替,不提倡用goto语句 2、循环变量初始化:在while,do~while之前初始化; for语句表达式1中初始化。 3、循环控制条件和循环变量值的改变的语句

5.5循环的嵌套 公三种循环可互相嵌套,层数不限 ?外层循环可包含两个以上内循环,但不能相互交叉 》嵌套循环的执行流程 外循环 1) while( 2)do 3)while0) 4)for(;;) { { while() do do do { {. {. { 内循环 while(); }while(); }while() }while()方 while 内循环 冬嵌套循环的跳转 禁止: ●从外层跳入内层 ●跳入同层的另一循环
5.5 循环的嵌套 ❖三种循环可互相嵌套,层数不限 ❖外层循环可包含两个以上内循环,但不能相互交叉 ❖嵌套循环的执行流程 (1) while() { . while() { . } . } (2) do { . do { . }while( ); . }while( ); (3) while() { . do { . }while( ); . } (4) for( ; ;) { . do { . }while(); . while() { . } . } 内循环 外循环 内循环 ❖嵌套循环的跳转 禁止: ⚫从外层跳入内层 ⚫跳入同层的另一循环

例.编写程序,求1!、31、51、.、19!。 分析:求一个数字的阶乘一求多个数字的阶乘 f1; for(i=1;i<=3;i++) f-f*i; printf("f-%fn",f); main() int n,i; float f for(n=1;n<=19,n+=2) {f1; /*该语句必须位于外循环体内*, for(i=l;i<=n;i++) f-f*i; printf("f-fn",f):
例 . 编写程序,求1!、3!、5!、.、19!。 f=1; for(i=1;i<=3;i++) f=f*i; printf("f=%f\n",f); 分析 :求一个数字的阶乘——求多个数字的阶乘 main( ) { int n,i; float f; for(n=1;n<=19;n+=2) {f=1; /*该语句必须位于外循环体内*/ for(i=1;i<=n;i++) f=f*i; printf("f=%f\n",f); } }