1、浙大JAVA实验题答案07answer浙大JAVA-实验题答案07answer实验7 循环结构程序的设计(二)1. 程序填空题,不要改变与输入输出有关的语句。40004求11/21/31/4输入一个正整数repeat (0repeat10),做repeat次下列运算:读入1 个正整数 n(n=100),计算并输出11/21/31/4的前n项和(四舍五入保留小数4位)。例:括号内是说明输入2 (repeat=2)103输出0.64560.8333import java.util.Scanner;public class Test40004 public static void main(Stri
2、ng args) int ri, repeat; int i, n, flag; float sum; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) n=in.nextInt(); /*-*/ sum=0; flag=1; for(i=1;i=n;i+) sum+=flag*1.0f/i; flag=-flag; System.out.println(long)(sum*10000+0.5)/10000.); 40006求11/31/51/7输入一个正整数repeat (0re
3、peat10),做repeat次下列运算:读入1 个正实数eps,计算并输出11/31/51/7,直到最后一项的绝对值小于eps为止(要求每一项的绝对值均大于等于eps,并以float类型输出数据)。例:括号内是说明输入2 (repeat=2)1E-40.1输出0.78530.8349import java.util.Scanner;public class Test40006 public static void main(String args) int ri, repeat; int temp, flag; double eps, item, sum; Scanner in=new Sc
4、anner(System.in); repeat=in.nextInt(); for(ri=1; ri=eps) sum+=item; flag=-flag; temp+=2; item=flag*1.0/temp; System.out.println(int)(sum*10000+0.5)/10000.); 40011 求2/13/25/38/5.输入一个正整数repeat (0repeat10),做repeat次下列运算:输入一个正整数n,输出 2/1+3/2+5/3+8/5 +.的前n项之和,保留4位小数(不足4位时,不必用0填满4位)。(该序列从第2项起,每一项的分子是前一项分子与分
5、母的和,分母是前一项的分子)例:括号内是说明输入3 (repeat=3) 1 5 20输出2.0 (第1项是2.0)8.3917 (前5项的和是8.3917)32.6603 (前20项的和是32.6603)import java.util.Scanner;public class Test40011 public static void main(String args) int ri, repeat; int i,n; float a,b,s,t; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=rep
6、eat; ri+) n=in.nextInt(); /*-*/ /*-*/ a=1; /分母 b=2; /分子 s=0; for(i=1;i=n;i+) s+=b/a; t=a; a=b; /分母是前一项的分子 b=t+b; /分子是前一项分子与分母的和 System.out.println(int)(s*10000+.5)/10000.); 40012 求aaaaaaaaa输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2个正整数a和n, 求a+aa+aaa+aaa(n个a)之和。例:括号内是说明输入2 (repeat=2)2 3 (a=2, n=3)8 5
7、 (a=8, n=5)输出246 (2+22+222)98760 (8+88+888+8888+88888) import java.util.Scanner;public class Test40012 public static void main(String args) int ri, repeat; int i, n, a, sn, tn; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) a=in.nextInt(); n=in.nextInt(); /*-*/ tn=
8、a; sn=0; for(i=1;i=n;i+) sn+=tn; tn=tn*10+a; /迭代公式 System.out.println(sn); 40013 判断素数(提示:变量n未用到)输入一个正整数repeat (0repeat10),做repeat次下列运算:输入一个正整数m,如果它是素数,输出YES,否则,输出NO(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。例:括号内是说明输入4 (repeat=4) 1 2 9 17输出NO (1不是素数)YES (2是素数) NO (9不是素数) YES (17是素数)import java.util.Scanner;publ
9、ic class Test40013 public static void main(String args) int ri, repeat; int i, m, n; boolean flag; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) m=in.nextInt(); /*-*/ flag=true; if(m=1)flag=false; for(i=2;i=m-1;i+) if(m%i=0) flag=false; break; if(flag) System.out.
10、println(YES); else System.out.println(NO); 40014 求最小公倍数和最大公约数输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:输入两个正整数m和n,输出它们的最小公倍数和最大公约数。输入输出示例:括号内为说明输入:3 (repeat=3)3 7 (m=3,n=7)24 4 (m=24,n=4)24 18 (m=24,n=18)输出:the least common multiple:21, the greatest common divisor:1the least common multiple:24, the
11、greatest common divisor:4the least common multiple:72, the greatest common divisor:6import java.util.*;public class Test40014 public static void main(String args) Scanner in =new Scanner(System.in); int gcd, lcm, m, n,r; int repeat, ri; repeat=in.nextInt(); for(ri = 1; ri = repeat; ri+) m=in.nextInt
12、(); n=in.nextInt(); if(m = 0 | n = 0) System.out.println(m = 0 or n = 0); else /*-*/ lcm=m*n; if(mn)r=m;m=n;n=r; r=m%n; while(r!=0) m=n; n=r; r=m%n; gcd=n; lcm=lcm/gcd; System.out.println(the least common multiple:+lcm +, the greatest common divisor:+gcd); 40021 求1 + 1/2! +.+ 1/n!输入一个正整数repeat (0rep
13、eat10),做repeat次下列运算:输入1 个正整数n,计算 s 的前n项的和。 s = 1 + 1/2! +.+ 1/n! 例:括号内是说明输入:2 (repeat=2)2 (n=2)10 (n=10)输出:1.51.7183import java.util.Scanner;public class Test40021 public static void main(String args) int ri, repeat; int i,n; float s,t; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=
14、1; ri=repeat; ri+) n=in.nextInt(); /*-*/ s=0; t=1; for(i=1;i=n;i+) t*=i; s+=1/t; /如果这两条语句交换位置,则i=1要改成i=2 System.out.println(int)(s*10000+0.5)/10000.); 40022 求各位数字的立方和等于它本身的数(提示:被判断的数不一定是三位数)输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2 个正整数m和n(1=m,n=1000),输出m 和n之间所有满足各位数字的立方和等于它本身的数。输出语句:System.out.pri
15、ntln(i);例:括号内是说明输入:2 (repeat=2)100 400 (m=100, n=400)1 100 (m=1, n=100)输出:153 (1*1*1+5*5*5+3*3*3=153)370 (3*3*3+7*7*7=370)371 (3*3*3+7*7*7+1*1*1=371)1import java.util.Scanner;public class Test40022 public static void main(String args) int ri, repeat; int i, digit, m, n, number, sum; Scanner in=new S
16、canner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) m=in.nextInt(); n=in.nextInt(); /*-*/ for(i=m;i0) digit=number%10; number=number/10; sum+=digit*digit*digit; if(i=sum) System.out.println(i); 40023 统计素数并求和输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2 个正整数m和n(1=m,n=500),统计并输出m 和n之间的素数的个数
17、以及这些素数的和。例:括号内是说明输入:3 (repeat=2)1 10 (m=1, n=10)20 35 (m=20, n=35)14 16 (m=14, n=16)输出:count=4, sum=17 (1到10之间有4个素数:2,3,5,7)count=3, sum=83 (20到35之间有3个素数:23, 29, 31)count=0, sum=0 (14到16之间没有素数)import java.util.Scanner;public class Test40023 public static void main(String args) int ri, repeat; int co
18、unt, i, j, k, m, n, sum; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) m=in.nextInt(); n=in.nextInt(); /*-*/ count=sum=0; for(k=m;k=n;k+) for(i=2;i=k-1;i+) if(k%i=0)break; if(i=k) count+; sum+=k; System.out.println(count=+count+, sum=+sum); 另一种编法: count=sum=0; boo
19、lean flag; for(k=m;k=n;k+) if(k=1)flag=false; /1不是素数 else flag=true; for(i=2;i=0),计算并输出2016元旦后经days天,是星期几。具体星期用整数06表示,分别对应星期日、星期一至星期六。说明:1)源程序中不得出现package关键字;2)程序中的第一个大括号“”必须位于类名所在行。3)类名与变量名由编程者自取。4)指明为整数或整数的数据,不要用浮点类型。输入输出示例:括号内是说明输入3 (n3,表示后面要输入3次days)36 (第一个days)100 (第二个days)1000 (第三个days)输出6 (20
20、16年元旦后第36天是星期六)0 (2016年元旦后第100天是星期日)4 (2016年元旦后第1000天是星期四)import java.util.Scanner;public class Test40036 public static void main(String args) int ri, n; int days, week; Scanner in=new Scanner(System.in); n=in.nextInt(); week=0; for(ri=1; ri0),做n次下列运算:从键盘输入一批学生的整数成绩(至少有1个成绩,以负数为结束标志),计算平均分(保留2位小数),并
21、统计不及格成绩的个数。假定平均分使用变量ave,则平均分输出使用格式:System.out.println(average=+Math.round(ave*100)/100.);说明:1)源程序中不得出现package关键字;2)程序中的第一个大括号“”必须位于类名所在行。3)类名与变量名由编程者自取。4)指明为整数或整数的数据,不要用浮点类型。输入输出示例:括号内是说明输入2 (n2,表示后面要输入二批成绩)67 88 73 54 82 -1 (第一批成绩)78 90 33 59 69 100 92 -1 (第二批成绩)输出average=72.8 (第一批成绩的平均分)count=1 (第
22、一批成绩的不及格人数)average=74.43 (第二批成绩的平均分)count=2 (第二批成绩的不及格人数)import java.util.Scanner;public class Test40037 public static void main(String args) int ri, n; int score,sum,count1,count; float ave; Scanner in=new Scanner(System.in); n=in.nextInt(); for(ri=1; ri=0) sum+=score; count1+; if(score60)count+; score=in.nextInt(); ave=(float)sum/count1; System.out.println(average=+Math.round(ave*100)/100.); System.out.println(count=+count);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1