浙大 JAVA语言程序设计编程答案6
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
flag=false; break; }
if(flag) System.out.println("YES"); else System.out.println("NO"); } } }
说明:变量 n 未用到
6. 求最小公倍数和最大公约数
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入两个正整数 m 和 n,输出它们的最小公倍数和最大公约数。
例:括号内是说明 输入 2 (repeat=2) 2 3 (a=2, n=3) 8 5 (a=8, n=5) 输出 246 (2+22+222) 98760 (8+88+888+8888+88888)
import java.util.Scanner; public class Test40012{
输入输出示例:括号内为说明
输入:
3
(repeat=3)
37
(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:1 the least common multiple:24, the greatest common divisor:4 the least common multiple:72, the greatest common divisor:6
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.); } } }
2. 求 1-1/3+1/5-1/7+…… 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 读入 1 个正实数 eps,计算并输出 1-1/3+1/5-1/7+……,直到最后一项的绝对值小于 eps 为止(要求每一项的 绝对值均大于等于 eps,并以 float 类型输出数据)。
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.); } }
}
4. 求 a+aa+aaa+aa…a 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入 2 个正整数 a 和 n, 求 a+aa+aaa+aa…a(n 个 a)之和。
import 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 Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ m=in.nextInt(); n=in.nextInt(); /*------------------*/
System.out.println("the least common multiple:"+lcm +", the greatest common divisor:"+gcd);
}
7. 求 1 + 1/2! +....+ 1/n! 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入 1 个正整数 n,计算 s 的前 n 项的和。 s = 1 + 1/2! +....+ 1/n!
a=in.nextInt(); n=in.nextInt();
/*--------------------*/
tn=a; sn=0; for(i=1;i<=n;i++){
sn+=tn; tn=tn*10+a; //迭代公式 }
System.out.println(sn); } } }
5. 判断素数 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 m,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被 1 和自身整除的正整数,1 不是 素数,2 是素数)。
例:括号内是说明 输入: 2 (repeat=2) 2 (n=2) 10 (n=10) 输出: 1.5 1.7183
import 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();
例:括号内是说明 输入: 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) 1
例:括号内是说明 输入 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<=repeat; ri++){ n=in.nextInt(); /*--------------------*/
例:括号内是说明 输入 2 (repeat=2) 10 3 输出 0.6456 0.8333
import java.util.Scanner; public class Test40004 {
public static void main(String[] args) { int ri, repeat; int i, n, flag; float sum; Scann来自百度文库r in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ n=in.nextInt(); /*--------------------*/
实验 7 循环结构程序的设计(二)
程序填空,不要改变与输入输出有关的语句。 1. 求 1-1/2+1/3-1/4+……
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 读入 1 个正整数 n(n<=100),计算并输出 1-1/2+1/3-1/4+……的前 n 项和(四舍五入保留小数 4 位)。
import 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++){
例:括号内是说明 输入 4 (repeat=4) 1 2 9 17 输出 NO (1 不是素数) YES (2 是素数) NO (9 不是素数) YES (17 是素数)
import java.util.Scanner; public class Test40013{
public static void main(String args[]){ int ri, repeat; int i, m, n; boolean flag;
} } }
8. 求各位数字的立方和等于它本身的数。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入 2 个正整数 m 和 n(1<=m,n<=1000),输出 m 和 n 之间所有满足各位数字的立方和等于它本身的数。 输出语句:System.out.println(i);
item=1; sum=0; temp=flag=1; while(Math.abs(item)>=eps){
sum+=item; flag=-flag; temp+=2; item=flag*1.0/temp; }
System.out.println((int)(sum*10000+0.5)/10000.);
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){
for(ri=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.);
例:括号内是说明 输入 2 (repeat=2) 1E-4 0.1 输出 0.7853 0.8349
import 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 Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ eps=in.nextDouble(); /*--------------------*/
} } }
m=in.nextInt(); n=in.nextInt(); if(m<= 0||n<= 0)
System.out.println("m <= 0 or n <= 0"); else {
/*---------*/
lcm=m*n; if(m<n){r=m;m=n;n=r;} r=m%n; while(r!=0) {m=n; n=r; r=m%n;} gcd=n; lcm=lcm/gcd;
} } }
3. 求 2/1+3/2+5/3+8/5+... 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n,输出 2/1+3/2+5/3+8/5 +...的前 n 项之和,保留 4 位小数(不足 4 位时,不必用 0 填满 4 位)。 (该序列从第 2 项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)
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++){
if(flag) System.out.println("YES"); else System.out.println("NO"); } } }
说明:变量 n 未用到
6. 求最小公倍数和最大公约数
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入两个正整数 m 和 n,输出它们的最小公倍数和最大公约数。
例:括号内是说明 输入 2 (repeat=2) 2 3 (a=2, n=3) 8 5 (a=8, n=5) 输出 246 (2+22+222) 98760 (8+88+888+8888+88888)
import java.util.Scanner; public class Test40012{
输入输出示例:括号内为说明
输入:
3
(repeat=3)
37
(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:1 the least common multiple:24, the greatest common divisor:4 the least common multiple:72, the greatest common divisor:6
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.); } } }
2. 求 1-1/3+1/5-1/7+…… 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 读入 1 个正实数 eps,计算并输出 1-1/3+1/5-1/7+……,直到最后一项的绝对值小于 eps 为止(要求每一项的 绝对值均大于等于 eps,并以 float 类型输出数据)。
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.); } }
}
4. 求 a+aa+aaa+aa…a 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入 2 个正整数 a 和 n, 求 a+aa+aaa+aa…a(n 个 a)之和。
import 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 Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ m=in.nextInt(); n=in.nextInt(); /*------------------*/
System.out.println("the least common multiple:"+lcm +", the greatest common divisor:"+gcd);
}
7. 求 1 + 1/2! +....+ 1/n! 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入 1 个正整数 n,计算 s 的前 n 项的和。 s = 1 + 1/2! +....+ 1/n!
a=in.nextInt(); n=in.nextInt();
/*--------------------*/
tn=a; sn=0; for(i=1;i<=n;i++){
sn+=tn; tn=tn*10+a; //迭代公式 }
System.out.println(sn); } } }
5. 判断素数 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 m,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被 1 和自身整除的正整数,1 不是 素数,2 是素数)。
例:括号内是说明 输入: 2 (repeat=2) 2 (n=2) 10 (n=10) 输出: 1.5 1.7183
import 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();
例:括号内是说明 输入: 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) 1
例:括号内是说明 输入 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<=repeat; ri++){ n=in.nextInt(); /*--------------------*/
例:括号内是说明 输入 2 (repeat=2) 10 3 输出 0.6456 0.8333
import java.util.Scanner; public class Test40004 {
public static void main(String[] args) { int ri, repeat; int i, n, flag; float sum; Scann来自百度文库r in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ n=in.nextInt(); /*--------------------*/
实验 7 循环结构程序的设计(二)
程序填空,不要改变与输入输出有关的语句。 1. 求 1-1/2+1/3-1/4+……
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 读入 1 个正整数 n(n<=100),计算并输出 1-1/2+1/3-1/4+……的前 n 项和(四舍五入保留小数 4 位)。
import 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++){
例:括号内是说明 输入 4 (repeat=4) 1 2 9 17 输出 NO (1 不是素数) YES (2 是素数) NO (9 不是素数) YES (17 是素数)
import java.util.Scanner; public class Test40013{
public static void main(String args[]){ int ri, repeat; int i, m, n; boolean flag;
} } }
8. 求各位数字的立方和等于它本身的数。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入 2 个正整数 m 和 n(1<=m,n<=1000),输出 m 和 n 之间所有满足各位数字的立方和等于它本身的数。 输出语句:System.out.println(i);
item=1; sum=0; temp=flag=1; while(Math.abs(item)>=eps){
sum+=item; flag=-flag; temp+=2; item=flag*1.0/temp; }
System.out.println((int)(sum*10000+0.5)/10000.);
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){
for(ri=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.);
例:括号内是说明 输入 2 (repeat=2) 1E-4 0.1 输出 0.7853 0.8349
import 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 Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ eps=in.nextDouble(); /*--------------------*/
} } }
m=in.nextInt(); n=in.nextInt(); if(m<= 0||n<= 0)
System.out.println("m <= 0 or n <= 0"); else {
/*---------*/
lcm=m*n; if(m<n){r=m;m=n;n=r;} r=m%n; while(r!=0) {m=n; n=r; r=m%n;} gcd=n; lcm=lcm/gcd;
} } }
3. 求 2/1+3/2+5/3+8/5+... 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n,输出 2/1+3/2+5/3+8/5 +...的前 n 项之和,保留 4 位小数(不足 4 位时,不必用 0 填满 4 位)。 (该序列从第 2 项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)
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++){