1、For循环结构和循环控制break、continue,学会使用for循环结构 学会在程序中使用break和continue,本章目标,为什么使用for循环2-1,回顾问题1:令狐冲说一百遍“我最棒” 回顾问题2:根据人数和成绩,计算平均成绩,解决: 使用while循环,共同点:确定的循环次数,更优解决: for循环结构,为什么使用for循环2-2,int i=0; while(i100)printf(“我最棒“);i+; ,for(int i=0;i100;i+) printf(“我最棒“); ,for比while更简洁,while循环结构,for循环结构,for循环的语法和执行顺序,什么是f
2、or循环,for( ; ; ); ,条件为true,循环体被执行,for ( int i = 0 ; i 100 ; i+ ) printf(“我最棒“); ,代码规范:格式对齐、代码的缩进,表达式1,表达式2,表达式3,循环操作,参数初始化,条件判断,更新循环变量,1,2,4,3,如何使用for循环,1、循环录入某学员S1的5门课成绩,计 算平均分,循环次数:5 循环条件:循环的次数不足5,继续循环 循环操作:录入成绩,计算成绩之和,使用for循环结构的步骤 1、分析循环条件和循环操作 2、套用for语法写出代码 3、检查循环是否能够退出,结合问题1,如何使用for循环3-2,/省略声明变量
3、for(int i = 0; i 5; i+) /循环5次录入5门课成绩printf(“请输入5门功课中第%d门课的成绩: “,i);scanf(“%f”,初始值:i= 0 循环条件:i5 循环变量改变:i+,循环操作执行5次,演示示例1:使用for循环结构,完整代码,如何使用for循环3-3,2、输出如图所示加法表,for( int i = 0, j = val; i=val; i+, j- )printf(“%d + %d = %d“ ,i,j,(i+j);,1、循环初始化:i = 0;j = 输入值 2、循环条件:i=输入值 3、循环操作:计算i+j 4、循环变量的改变:i+,j-,完整
4、代码,表达式3可以是用“,”隔开的多 个表达式,运算顺序从左到右,表达式1中可以声明多个同一 类型的值并赋值,用“,”隔开,演示示例2:使用for循环结构,for循环常见问题4-1,for(;i10;i+)printf(“这是 “+i); ,int i=0;,编译错误: 变量 i 没有初始化,for( ; ; ) ; ,不能省略,可省略,表达式1省略,循环变量 的初始值在for语句之前 由赋值语句取得,for循环常见问题4-2,for(int i=0;i+)printf(“这是 “+i); ,编译正确,但是缺少 循环条件,造成死循环,for循环常见问题4-4,for(;)printf(“这是测
5、试“); ,表达式全省略,无条件判断,循环变量无改变, 应在循环体内设法结束循环,否则会造成死循环,死循环,小结1,求1100之间不能被3整除的数之和(使用for循环结构),参考代码,为什么需要break语句,int i = 2; switch(i)case 1: System.out.println(“星期一“);break;case 2: System.out.println(“星期二“);break;/其他语句,遇到break,立即跳出switch语句,回顾break用于switch语句,描述4000米长跑比赛,for (int i = 0; i10; i+) 跑400米;,if(不能坚
6、持)break; /退出比赛,第8圈, 快累死了 我要退出,什么是break语句,break:改变程序控制流 用于do-while、while、for中时,可跳出循环而执行循环后面的语句,while() break; ,跳出整个循环,break通常在循环中与条件语句一起使用,如何使用break语句2-1,3、循环录入某学生5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示录入错误,循环录入成绩,判断录入正确性:录入错误,使用break语句立刻跳出循环;否则,累加求和,演示示例3:使用break语句,如何使用break语句2-2, for(int i = 0; i 5; i+) /循环
7、5次录入5门课成绩sprintf(“请输入成绩: “);scanf(“%d”, 循环外的语句,对录入的分数进行判断,如果小于0,标记出错状态,并立即跳出整个for循环,问题3完整代码演示,110之间的整数相加,得到累加值大于20的当前数,1、使用循环进行累加,从1到10 2、判断累加值是否大于20 3、如果大于20,则跳出循环,并打印当前值,/定义一个变量,进行累加int sum=0;for(int i=1;i 20 )printf(“当前数是:%d“,i);break; ,参考代码,小结2,演示运行效果,为什么需要continue语句,4、循环录入C语言课的学生成绩,统计分数大于等于 80分
8、的学生比例,1、通过循环,获得分数大于等于80分的学生人数num2、判断:如果成绩80,不执行num+,直接进入下一次循环,什么是continue语句,continue :只能用在循环里 continue 作用:跳过循环体中剩余的语句而执行下一次循环,while() continue; ,继续下一次循环,通常与条件语句一起使用,加速循环,for(int i = 0; i10;i+)跑400米;if(!口渴)continue; /不喝水,继续跑接过水壶,喝水; ,示例,如何使用continue,for(int i = 0; i total; i+) System.out.print(“请输入第“
9、 + (i+1) + “位学生的成绩: “);score = input.nextInt();if(score 80)continue;num+; /大于等于80分的人数 double rate = (double) num / total * 100; System.out.println(“80分以上的学生所占的比例为:“+ rate + “%“);,对录入的分数进行判断,如果小于80,跳出本次循环,执行下一次循环,问题4完整代码,1、使用循环进行累加,循环的范围是从1至10 2 、判断当前数是否为偶数 3 、如果为奇数跳过,执行下一个循环,如果为偶数,进行累加,int sum=0; /定
10、义一个变量,进行累加 for(int i=1;i=10;i+)if( i % 2 = 1)continue; /如果i为奇数,结束本次循环,进行下一次循环sum=sum+i;printf(“1-10之间的偶数和是:%d“,sum);,小结3,求110之间的所有偶数和,完整代码,演示运行效果,对比break和continue,对比方法:通过Eclipse单步运行,观察 程序执行顺序 变量值的变化观察案例 案例1:110之间的整数相加,得到累加值大于20的当前数 案例2:求110之间的所有偶数和,小结4,说一说在循环中使用continue和break的区别?,int sum=0; for( int
11、 i=0;i5;i+)if( i = 3) break;sum=sum+i; System.out.println(“sum = “+sum);,sum = 3,sum = 7,输出值是多少?如果将break替换成continue,输出值又为多少?,替换后,循环总结2-2,int i=0; int sum=0; while( i10 )sum=sum+i;i+; ,int i=0; int sum=0; dosum=sum+i;i+;while(i10);,int sum=0;for(int i=0;i10;i+)sum=sum+i;,1,2,3,4,1,2,3,4,1,2,3,4,while和for相同,先进行判断,后执行循环体内容 do-while是先执行,后判断,至少执行一次,指出各种循环结构的执行顺序,控制流语句小结,顺序结构:语句顺序执行 分支结构:语句在满足条件下执行 if, if-else, if-else if-else, switch循环结构:语句在满足条件下循环执行多次 while, do-while, for跳转语句 break, continue,for循环结构如何执行?在循环中使用什么方式跳出或终止循环?break与continue之间的差别是什么?,总结,