您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > linux/Unix相关 > 作业2-3:Java 语句控制
第3章控制语句学习目标能够使用if和if…else选择语句来选择各种动作能够使用for循环结构来重复地执行程序中的语句能够使用do…while循环和while循环语句重复地执行程序中的语句能够使用break和continue程序控制语句3.1实验前检查在学完《Java语言程序设计》的第3章后,请回答以下问题。这些问题旨在检验和巩固你对关键概念的理解。既可以在实验课程之前,也可以在实验课程期间完成。3.1.1选择题:1.下列语句序列执行后,m的值是(C)。inta=10,b=3,m=5;if(a==b)m+=a;elsem=++a*m;A)15B)50C)55D)52.下列语句序列执行后,k的值是(B)。inti=4,j=5,k=9,m=5;if(ij||mk)k++;elsek--;A)5B)10C)8D)93.下列语句序列执行后,k的值是(C)。inti=10,j=18,k=30;switch(j-i){case8:k++;case9:k+=2;case10:k+=3;default:k/=j;}A)31B)32C)2D)334.若a和b均是整型变量并已正确赋值,正确的switch语句是(D)。A)switch(a+b);{......}B)switch(a+b*3.0){......}C)switcha{......}D)switch(a%b){......}5.下列语句序列执行后,j的值是(A)。intj=1;for(inti=5;i0;i-=2)j*=i;A)15B)1C)60D)06.以下for循环的执行次数是(B)。for(intx=0;(x==0)&(x4);x++);A)无限次B)一次C)执行4次D)执行3次7.下列语句序列执行后,j的值是(D)。intj=2;for(inti=7;i0;i-=2)j*=2;A)15B)1C)60D)328.下列语句序列执行后,k的值是(B)。intm=3,n=6,k=0;while((m++)(--n))++k;A)0B)1C)2D)39.下列语句序列执行后,i的值是(C)。ints=1,i=1;while(i=4){s*=i;i++;}A)6B)4C)24D)510.下列语句序列执行后,k的值是(C)。intm=3,n=6,k=0;while(mn){++k;m++;--n;}A)0B)1C)2D)311.以下由do-while语句构成的循环执行的次数是(B)。intm=8;do{++m;}while(m8);A)一次也不执行B)执行1次C)8次D)有语法错,不能执行12.下列语句序列执行后,i的值是(A)。inti=10;do{i/=2;}while(i1);A)1B)5C)2D)013.下列语句序列执行后,i的值是(D)。inti=10;do{i/=2;}while(i--1);A)1B)5C)2D)–114.下列循环中,执行breakouter语句后,所列(B)语句将被执行。outer:for(inti=1;i10;i++){inner:for(intj=1;j10;j++){if(i*j50)breakouter;System.out.println(i*j);}next:A)标号为inner的语句B)标号为outer的语句C)标号为next的语句D)以上都不是15.下列循环中,执行continueouter语句后,(B)说法正确。outer:for(inti=1;i10;i++){inner:for(intj=1;j10;j++){if(i*j50)continueouter;System.out.println(i*j);}}A)程序控制在外层循环中并且执行外层循环的下一迭代B)程序控制在内层循环中并且执行内层循环的下一迭代C)执行标号为next的语句D)以上都不是3.1.2程序填空题1.下面是一个java应用程序(Application),它的功能是计算s=1+2+3+...+10,请完成程序填空。public__class_Class1{publicstaticvoidmain(Stringargs[]){ints=0;for(inti=1;i=10;i++){s+=__i_;}System.out.println(s=+s);}}2.下面是一个javaApplication的主类的定义,其功能是输出乘法口诀表第一列,请完成程序填空。importjava.io.*;publicclassMyClass{publicstaticvoidmain(String[]args){intj=1;for(inti=1;__i=9_;i++){System.out.println(i+*+j+=+__i*j_);}}}3.1.3程序改错题下列程序片断有什么错误?如何改正?1.charch;switch(ch)标点格式{case‘A’:System.out.println(“字母是A”);case‘B’:System.out.println(“字母是B”);}2.i=10;INTI=10,SUM=0;while(i!=0);sum+=i;3.for(inti=10;i100;i--)intSUM=0sum+=i;4.for(floati=0.0;i-10.0;i-=1.0)DOUBLESystem.out.println(i);5.inti=10;do{System.out.println(i);i--;}while(i=1)WHILE(I==1);3.2编程实验3.2.1编程实验1:直角三角形本实验要求在封闭实验课中在教师指导下完成。1.实验目的本实验旨在巩固学生对《Java语言程序设计》中第3章内容的掌握。在这个实验中学生将练习:从控制台获取数据使用IF语句进行判断2.问题描述编写一个应用程序,读取用户任意输入的3个非零数值,判断它们是否可以作为三角形的3条边,如果可以,则打印打印这3条边,计算并显示这个三角形的面积。三角形面积计算网站找找啊!!!3.示例输出4.程序模板publicclassTriangle{publicstaticvoidmain(String[]args){intside1;intside2;intside3;System.out.println(“Enterlengthofside1:”);side1=MyInput.readDouble();System.out.println(“Enterlengthofside2:”);side2=MyInput.readDouble();System.out.println(“Enterlengthofside3:”);side3=MyInput.readDouble();intside1Square=side1*side1;intside2Square=side2*side2;intside3Square=side3*side3;if((side1Square+side2Square)==side3Square)System.out.println(“Areais:”+side1*side2/2);if((side1Square+side3Square)==side2Square)System.out.println(“Areais:”+side1*side3/2);if((side2Square+side3Square)==side1Square)System.out.println(“Areais:”+side2*side3/2);}}5.解答提示1)使用教材中的MyInput类中的MyInput.readDouble()方法读入一个非零的双精度浮点数值。代码中三次使用这个方法,依次从控制台获取三条边的值。2)对直角三角形的判断依据定理:两条直角边的平方和等于斜边的平方。依次对每条边判断该边是否为斜边,三次使用IF语句一次判断。当任何一次判断都不成立时,不输出任何内容,表示该三边不能构成直角三角形。否则利用直角三角形求面积的方法求出面积,并打印输出该值。6.强化练习(1)编写程序对三个整数排序,由键盘输入整数分别存入变量num1、num2和num3,对他们进行排序,使得num1=num2=num3。(2)利用下表根据销售额计算销售提成。从键盘输入销售额并在控制台显示结果。销售额提成1美元——5000美元5001美元——10000美元10001美元以上8%10%12%3.2.2编程实验2:水仙花数本实验要求在封闭实验课中在教师指导下完成。1.实验目的本实验旨在巩固学生对《Java语言程序设计》中第3章内容的掌握。在这个实验中学生将练习:水仙花数的概念FOR语句与IF语句结合使用2.问题描述水仙花数是指个位、十位和百位三个数的立方和等于这个三位数本身的数,编写程序求出所有的水仙花数。3.示例输出4.程序模板publicclassNarcissus{publicstaticvoidmain(Stringargs[]){inti,j,k;for(intnum=100;num=999;num++){i=num%10;//个位数j=num/10%10;//十位数k=num/100;//百位数if(i*i*i+j*j*j+k*k*k==num)System.out.print(num+\t);}}}5.解答提示1)水仙花数涉及个位、十位、百位数字,所以水仙花数十个三位数,即100—999之间的数。因此FOR循环的循环变量范围为100—999。2)用求余数方法%,依次求出每一位数。3)用IF语句判断,三位数的平方和是否等于原数,如果是,打印输出。6.强化练习1)5.写一个嵌套的for循环打印下列图案:1121231234123452)写一个嵌套的for循环打印下列图案:1121124211248421124816842112481632168421124816326432168421124816326412864321684213.2.3编程实验3:整数个数本实验要求在封闭实验课中在教师指导下完成。1.实验目的本实验旨在巩固学生对《Java语言程序设计》中第3章内容的掌握。在这个实验中学生将练习:DO……WHILE语句的使用2.问题描述编写程序,读入个数不确定的整数并判断读入的正数和负数个数,输入为0时结束程序。3.示例输出………4.程序模板publicclassExercise3_4{publicstaticvoidmain(String[]args){intcountPositive=0,countNegative=0;intnum;do{num=MyInput.readInt();if(num0)countPositive++;elseif(num0)countNegative++;}while(num!=0);System.out.println(thenumberofpostivesis+countPositive);System.out.println(thenumberofnegativesis+countNegative);}}5.解答提示1)DO….WHILE语句的使用:先执行DO中的内容,然后进行WHILE中的条件判断,如果为TRUE,再次执行DO循环体,否则跳出循环。不管WHILE条件是否成立,循环体都至少被执行一次。相比之下,WHILE循环必须先进行条件判断,只有条件成立时,才执行循环体。也就是说,循环体可能会一次都不执行。2)控制台输入为0时,结束输入,所以控制台至少要有一次输入,因此选择DO…WHILE循环。3)用变量countPositive和countNegative分别记录正数和负数的个数。在循环体中判断输入数的正负,分别累加这两个变量。4)当输入为0时,跳出循环,打印变量countPositive和countNegative的值。6.强化练习1)用while循环求n2大于12000的最小数n。
本文标题:作业2-3:Java 语句控制
链接地址:https://www.777doc.com/doc-7028193 .html