您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第四章循环结构程序设计.
第四章循环结构程序设计第四章循环结构程序设计技能目标:通过本章学习,掌握Java语言中的实现循环的三种方式:使用while循环语句、do-while循环语句和for循环语句。并能灵活运用三种循环语句完成循环结构程序设计,从而解决实际问题,也为后续章节学习编程做准备。知识目标:•掌握while语句及其用法;•掌握do-while语句及其用法;•掌握for语句及其用法;•掌握break和continue语句及其用法;•掌握常规循环程序设计算法:累加、阶乘、求素数等任务:完善教务管理系统,实现循环录入及输出学员姓名、成绩,并计算平均值和优秀成绩的学生比例。4.1while语句循环结构根据给定条件是否满足来决定是否重复执行某一个模块的结构,反复执行的程序段称为循环体。while循环语句的一般形式:while(条件表达式){循环体语句;}4.1while语句•while语句的执行流程:当条件表达式的值为true时,执行循环体。每次执行循环体的前后,都要判断条件表达式的值,表达式的值为true就继续执行循环体,直到表达式为假时就退出循环,转去执行while循环结构以外的下一条语句。循环条件循环体truefalse4.1while语句例4-1利用while语句求1+2+3+…+100的和。publicclassSum{publicstaticvoidmain(Stringargs[]){intsum=0;//存放累加和的变量,初值为0inti=1;//循环变量赋初值1while(i=100){//循环条件sum=sum+i;//循环体i++;//循环变量增值}System.out.println(1+2+3+...+100=+sum);//输出结果}}4.1while语句•例4-2录入班级人数和学生成绩,计算班级学生的平均成绩。4.1while语句importjava.util.*;publicclassAvgScore{publicstaticvoidmain(String[]args){intstuNum;//班级的学生人数intscore;//学生分数intsum=0;//学生分数总和doubleavg;//学生成绩平均值Scannersc=newScanner(System.in);System.out.print(请输入该班级的学生总数:);stuNum=sc.nextInt();inti=1;//循环变量赋初值while(i=stuNum){//循环条件System.out.print(请输入学号+i+的成绩:);score=sc.nextInt();//录入学生成绩sum=sum+score;//累加学生成绩i++;//循环变量增值}avg=(double)sum/stuNum;System.out.println(该班级学生的平均成绩为:+avg);}}4.1while语句•例4-3输入多个学生的成绩,直到输入一个负数结束,计算平均成绩。4.1while语句importjava.util.*;publicclassAvgScore2{publicstaticvoidmain(Stringargs[]){intscore;//学生分数inti=0;//学生人数计数doublesum=0;//学生分数总和Scannersc=newScanner(System.in);System.out.print(请输入第1位同学的成绩:);score=sc.nextInt();while(score=0){i++;//人数计数sum+=score;//累加学生成绩System.out.print(请输入第+(i+1)+个同学的成绩:);score=sc.nextInt();//录入学生成绩}System.out.println(共录入+i+同学的成绩,平均成绩为:+sum/i);}}4.2do-while语句do-while循环结构与while循环结构不一样,它先执行循环体,而后判断循环条件,若循环条件中的表达式值为true,那么再次执行循环体。每执行一次循环体,都判断一次循环条件,直到循环条件中的表达式值为false时,循环终止。do-while循环的一般形式:do{循环体}while(条件表达式);4.2do-while语句•do-while循环的执行流程:先执行循环体,再判断表达式的值是否为true,若为true,则继续重复执行循环体,若为false,就结束循环,转去执行do-while循环结构以外的下一条语句。可见,do-while循环无论循环条件是否成立,循环体至少被执行一次,这也是直到型循环结构的主要特征。循环体可以是一条语句或复合语句,也可以是空语句。循环条件循环体truefalse4.2do-while语句例4-4用do-while循环语句求1+2+3+…+100的和。publicclassSum{publicstaticvoidmain(Stringargs[]){intsum=0;//存放和的变量,初值为0inti=1;//循环变量赋初值1do{sum=sum+i;//循环体i++;//循环变量增值}while(i=100);//循环条件System.out.println(1+2+3+...+100=+sum);//输出结果}}4.2do-while语句例4-5连续录入学生姓名,输入“q”则结束程序。importjava.util.*;publicclassInputName{publicstaticvoidmain(String[]args){Stringname;//姓名Scannersc=newScanner(System.in);do{System.out.print(请输入学生姓名:);name=sc.next();//从控制台接收输入的姓名}while(!name.equals(q));System.out.println(程序结束);}}4.3for语句在Java语言实现循环结构的控制语句中,for语句的使用最为灵活,它不仅可以用于循环次数已确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以取代while语句。for循环的一般形式为:for(表达式1;表达式2;表达式3)循环体其中,“表达式1”一般是一个赋值表达式,用来给循环控制变量赋初值;“表达式2”一般是一个关系表达式或逻辑表达式,用来决定什么时候退出循环;“表达式3”一般是个算术表达式,定义循环控制变量每循环一次后按什么方法变化。这三个部分之间用分号(;)间隔。4.3for语句for循环的执行流程:(1)先求解表达式1。(2)求解表达式2,若其值为true,则执行循环体,然后执行下面第(3)步;若其值为false,则结束循环,转到第(5)步。(3)求解表达式3。(4)转回上面第(2)步继续执行。(5)循环结束,执行for语句下面的一个语句。表达式2表达式1truefalse循环体表达式34.3for语句for语句最简单的应用形式也是最容易理解的形式如下:for(循环变量赋初值;循环条件;循环变量增量)循环体例如:for(i=1;i=100;i++)sum=sum+i;4.3for语句说明:1.for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,即可以缺省,但“;”不能缺省。(1)省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值。(2)省略了“表达式2(循环条件)”,则不做其它处理时便成为死循环。例如:for(i=1;;i++)sum=sum+i;相当于:i=1;while(true){sum=sum+i;i++;}(3)省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。例如:for(i=1;i=100;){sum=sum+i;i++;}4.3for语句2.表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。例如:for(sum=0;i=100;i++)sum=sum+i;3.表达式1和表达式3可以是一个简单表达式也可以是用逗号间隔的表达式。例如:for(sum=0,i=1;i=100;i++)sum=sum+i;或:for(i=0,j=100;i=100;i++,j--)sum=i+j;4.3for语句例4-6利用for语句求1+2+3+…+100的和。publicclassSum{publicstaticvoidmain(Stringargs[]){intsum=0;//存放和的变量,初值为0for(inti=1;i=100;i++){sum=sum+i;//循环体}System.out.println(1+2+3+...+100=+sum);//输出结果}}4.3for语句例4-7循环录入李雷同学的5门课考试成绩,计算平均分。importjava.util.*;publicclassAvgScore{publicstaticvoidmain(String[]args){intscore;//每门课的成绩intsum=0;//成绩之和doubleavg;//平均分Scannersc=newScanner(System.in);System.out.print(输入学生姓名:);Stringname=sc.next();//输入姓名for(inti=1;i=5;i++){//循环5次录入5门课成绩System.out.print(请输入5门功课中第+i+门课的成绩:);score=sc.nextInt();sum=sum+score;}avg=sum/5.0;//计算平均分System.out.println(name+的平均分是:+avg);}}4.3for语句例4-8判断给定的整数是否为素数。程序分析:一个自然数除了1和它本身外不能被其他整数整除,则该自然数就称为素数。例如2、3、5、7等。根据定义,测试自然数n能否被2、3、4、...、n-1整除,只要能被其中一个整除,则n就不是素数,否则就是素数。下面的程序中设立了flag标志,flag为1时,n是素数;flag为0,则n不是素数。4.3for语句程序代码:importjava.util.*;publicclassPrimeNum{publicstaticvoidmain(Stringargs[]){Scannersc=newScanner(System.in);System.out.println(请输入一个数:);intn=sc.nextInt();intflag=1;//设立flag标志,为1时n是素数,为0时n不是素数for(inti=2;in;i++){if(n%i==0)//假如n能被i整除,则n一定不是素数{flag=0;//n能被i整除,n不是素数,令flag=0i=n;//令i为n,使in不成立,其作用是退出循环}}if(flag==1)System.out.println(n+是一个素数);elseSystem.out.println(n+不是一个素数);}}4.4几种循环控制语句的比较for循环、while循环和do-while循环都完成循环控制,下面对它们做一下比较:(1)while语句和for语句都属于先判断后执行的循环语句,所以循环体可能一次也不执行,属于当型循环。(2)do-while语句是执行循环体后,再判断循环条件的循环语句,循环体至少执行一次,属于直到型循环。(3)循环体至少被执行一次时,三种循环都可用来处理同样的问题,可以互相代替。所有循环语句都是在循环条件为true时才能执行循环体。(4)如果循环次数可以在进入循环语句之前确定,则使用for循环语句较好;在循环次数难以确定时,使用while和do-while语句较好。(5)用while和do-while循环时,循环变量初始化的操作应在while和do-while之前完成;而for语句可以在
本文标题:第四章循环结构程序设计.
链接地址:https://www.777doc.com/doc-2093108 .html