资源描述
实验7 循环结构程序的设计(二)程序填空,不要改变与输入输出有关的语句。1. 求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(String 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.); 2. 求11/31/51/7 输入一个正整数repeat (0repeat10),做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 Scanner(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.); 3. 求2/13/25/38/5. 输入一个正整数repeat (0repeat10),做repeat次下列运算:输入一个正整数n,输出 2/1+3/2+5/3+8/5 +.的前n项之和,保留4位小数(不足4位时,不必用0填满4位)。(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)例:括号内是说明输入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(); /*-*/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. 求aaaaaaaaa 输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2个正整数a和n, 求a+aa+aaa+aaa(n个a)之和。例:括号内是说明输入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 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=a;sn=0;for(i=1;i=n;i+)sn+=tn;tn=tn*10+a; /迭代公式 System.out.println(sn); 5. 判断素数输入一个正整数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;public 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.println(YES); else System.out.println(NO); 说明:变量n未用到6. 求最小公倍数和最大公约数输入一个正整数 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 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(); 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); 7. 求1 + 1/2! +.+ 1/n! 输入一个正整数repeat (0repeat10),做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=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.); 8. 求各位数字的立方和等于它本身的数。输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2 个正整数m和n(1=m,n=1000),输出m 和n之间所有满足各位数字的立方和等于它本身的数。输出语句:System.out.println(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 Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri=repeat; ri+) m=in.nextInt(); n=in.nextInt(); /*-*/ for(i=m;i0) digit=number%10; sum+=digit*digit*digit; number=number/10; if(i=sum) System.out.println(i); 9. 统计素数并求和。 40023输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2 个正整数m和n(1=m,n=500),统计并输出m 和n之间的素数的个数以及这些素数的和。例:括号内是说明输入: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 count, 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; boolean flag; for(k=m;k=n;k+) if(k=1)flag=false; /1不是素数 else flag=true; for(i=2;i=k-1;i+) if(k%i=0)flag=false; break; if(flag)sum+=i; count+;
展开阅读全文