1、实验 4 循环程序设计4.1 实验目的(1) 掌握三种循环语句的使用,能分析循环的执行过程;(2) 掌握 break和 continue语句的使用;(3)了解如何利用求余和整除操作获取和删除一个整数的最低位;(4) 掌握累加、累乘的处理方法。(5) 掌握计数问题的编写技巧,如何控制每行输出元素个数。4.2 知识要点循环就是反复执行一段代码,直到满足结束条件。循环语句一般包括初始化、循环体、迭代和判断 4部分。4.2.1 while循环与 do while循环的使用差异while语句的格式:while (条件表达式) 循环体特点是“先判断、后执行”,循环体有可能执行 0次。dowhile循环的格
2、式:do 循环体 while (条件表达式) 特点是“先执行,后判断”,循环体至少要执行 1次。建议: 在程序设计中尽量不用 do while循环,而用 while循环。4.2.2 for循环与 while循环的对应关系for (控制变量赋初值;循环条件;增值) 循环体 等价于:控制变量赋初值;While (循环条件) 循环体;控制变量增值;注意几点:(1)for 循环的执行过程是先做初始化,然后判断是否满足结束条件,若满足,则执行循环体,在执行完循环体后进行迭代增值。(2)初始化部分和增值部分可以使用逗号语句执行多个操作;(3)三部分均为空,写成 for(;)相当于一个无限循环。4.2.3
3、continue和 break语句的作用 continue-跳过之后的语句,继续下一轮循环; break-跳出直接所处循环。 带标号的 continue可以回到标号指定的那级循环的下一轮执行。 带标号的 break可以跳出标号指定的那级循环。4.2.4 常见问题处理(1)累加问题的解决办法累加变量的初值设置在循环外,通常赋 0为初值;(2)如何利用循环求阶乘累乘,在循环外设置变量初值为 1;(3)如何控制每行的输出数据个数(计数问题);(4)如何产生一定范围的随机整数。Math.random()产生的数是 0到 1之间的小数,不包括 0和 1,要产生随机整数必须先放大再取整。4.3 样例程序样
4、例 1:输入一批学生成绩,以-1 作为结束标记 (1)统计这批学生中,不及格、及格、中等、良好、优秀的人数。 (2)求这批学生的平均分。【分析】根据要求不难看出这是一个计数和累加问题。学生数量不确定,但有一个结束标记(-1),该问题从总体结构是一个循环处理问题,可采用 while循环,当输入数据为-1 时结束循环。为了统计各种情况的人数,需要设立相应的计数变量,并给其赋初值0,另外为了求平均分,必须计算总分,也就是计算出所有学生成绩的累加和,然后除总人数即可得到平均。【参考程序】import java.io.*;public class Scorepublic static void main
5、(String args) throws IOException int s=0,b=0,c=0,d=0,e=0,f=0; /变量赋初值BufferedReader br=new BufferedReader(new InputStreamReader(System.in);int a=Integer.parseInt(br.readLine(); /读取一个整数while(a!=-1)s+=a; /累加switch(a/10 ) case 0:case 1:case 2:case 3:case 4:case 5: b+;break; /计数增 1case 6: c+;break;case 7
6、: d+;break;case 8: e+;break;case 9: f+;break;a=Integer.parseInt(br.readLine();System.out.println(“优秀人数:“+f);System.out.println(“良好人数:“+e);System.out.println(“中等人数: “+d);System.out.println(“及格人数:“+c);System.out.println(“不及格人数:“+b);int average=s/(b+c+d+e+f); /求平均成绩System.out.println(“平均分=“+average);【说
7、明】程序流图见图 4-1,程序总体结构上是一个循环问题,在循环内部要分情况统计各分数段人数,包含一个是 switch语句。在输入数据时未处理异常,所以在 main方法的头部增加 throws IOException声明该方法会抛出 IO异常。【编程技巧】(1) 用 while循环控制数据的录入和处理过程,-1 作为循环的结束标记;注意循环体的最后要有输入数据的语句,以便得到新的处理数据。(2) 如何将各分数档按情况进行分别处理,掌握除 10取整后得到数据的特征。(3) 记住累加和计数问题的处理技巧。样例 2:找 10100 之间能被或整除的数,每行输出 5个数【参考程序】public clas
8、s Apublic static void main(String arge)int k=10; /循环控制变量,从 10变化到 100int m=0; /用于统计输出数的个数while(km) m=x; /如果比最大的还大,那 x成为最大的.if (x0) m+=a%10; /累加计算各位数字a=a/10;System.out.print(a+“的各位数字之和=“+m); 【编程技巧】(4) 如何取一个数的最低位;(5) 如何计算去掉最低进后的数;(6) 如何设置循环的条件。【思考】如何修改程序,使程序的输出形式为: 54237=5+4+2+3+7=21样例 6:计算 n至少多大时,以下不等
9、式成立。1+1/2+1/3+1/n10【参考程序】public class Limit public static void main(String args) int n=0;double s=0;while (s0 循环4.1 根据 whoplay的值决定是计算机拿 x根还是提示人拿 x根;计算机拿时最好带有智能,人拿时要限制输入数量。 4.2 修改 whoplay 的值;4.3 修改 remain的值;(5) 根据 whoplay的值决定胜者4)某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析: A、B 至少有一人作案; A、E、F 三人中至少有两人参与作案; A、D 不可能是同案犯; B
10、、C 或同时作案,或与本案无关; C、D 中有且仅有一人作案;如果 D没有参与作案,则 E也不可能参与作案。 试编一程序,将作案人找出来。4.5 思考题1)执行以下程序后,输出结果为public class ex2public static void main(String args) int f=1; int k;for (k=2;k5;k+)f*=k;System.out.println(k); A. 0 B. 1 C. 5 D. 4 E. 242) 设有如下类class Looppublic static void main(String agrs) int x=0;int y=0;outer:
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。