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 <stdio.h> 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 <stdio.h> 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); } }