1. 程式人生 > 其它 >java程式設計題50道(5)

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 }