java编程题50道(5)
程序21
题目:求1+2!+3!+…+20!的和
题目思路:
先以函数实现阶乘,在主函数通过for循环累计阶乘(注意阶乘过大,应使用double) n!=n*(n-1!)
1 package test; 2 3 import java.util.Scanner; 4 public class hello { 5 6 public static double jiecheng(Double a) {//定义阶乘函数 7 double sum=1; 8 for (int i = 1; i <= a; i++) {//因为后面20的阶乘太大了所以实用double 9 sum*=i; 10 } 11 return sum; 12 } 13 public static void main(String[] args) 14 { 15 Scanner in=new Scanner(System.in); 16 double sum=0; 17 for (double i = 1; i < 20; i++) { 18 sum+=jiecheng(i);//累加 19 } 20 System.out.print("总和为:"+sum);//输出 21 } 22 }
程序22
题目:利用递归方法求5!。
题目思路:
根据上题给出进行更改,公式为n!=n*(n-1!)
1 package test; 2 3 import java.util.Scanner; 4 public class hello { 5 6 public static double jiecheng(int a) {//定义阶乘函数 7 int sum=1; 8 if (a==1) {//给与1初始值 9 10 return 1; 11 } 12 for (double i = 1; i <= a; i++) {// 13 sum*=i; 14 } 15 return a*jiecheng(a-1);//根据阶乘公式输出 16 } 17 public static void main(String[] args) 18 { 19 Scanner in=new Scanner(System.in); 20 double sum=jiecheng(5); 21 System.out.print("总和为:"+sum);//输出 22 } 23 }
程序23
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
题目思路:
与之前一样,减少阶乘,改为年龄减2
1 package test; 2 3 import java.util.Scanner; 4 public class hello { 5 6 public static double jiecheng(int a) {//定义函数 7 int sum=10; 8 if (a==1) {//给与1初始值 9 10 return 10; 11 } 12 for (double i = 1; i < a; i++) {//每次减2 13 sum-=2; 14 } 15 return sum;//返回值 16 } 17 public static void main(String[] args) 18 { 19 Scanner in=new Scanner(System.in); 20 double sum=jiecheng(5); 21 System.out.print("总和为:"+sum);//输出 22 } 23 }
程序24
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
题目思路:
先确定位数后,将数字倒入数组中,后使用for循环逐个取出
1 package test; 2 3 import java.util.Scanner; 4 public class hello { 5 6 public static void main(String[] args) 7 { 8 Scanner in=new Scanner(System.in); 9 int x=in.nextInt();//确定位数 10 int []list =new int [x]; 11 for (int i = 0; i < x; i++) {//将数字导入数组 12 list[i]=in.nextInt(); 13 } 14 for (int i = x-1; i >=0; i--) {//逆序输出 15 System.out.print(list[i]+" "); 16 } 17 System.out.println("是"+x+"位数");//输出位数 18 19 } 20 }
程序25
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
题目思路:
已经知道是五位数,就懒得再用scanner了,偷下懒直接用数组判断就行,
若需要还是以为for循环进行判断,输入i个数,0与i,1与i-1
1 package test; 2 3 import java.util.Scanner; 4 public class hello { 5 6 public static void main(String[] args) 7 { 8 Scanner in=new Scanner(System.in); 9 int []list =new int [5]; 10 for (int i = 0; i < 5; i++) {//将数字导入数组 11 list[i]=in.nextInt(); 12 } 13 14 if (list[0]==list[4]&&list[1]==list[3]) {//判断 15 System.out.println("是回文数"); 16 } 17 18 } 19 }

浙公网安备 33010602011771号