java程式設計題50道(5)
阿新 • • 發佈:2021-07-15
程式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的階乘太大了所以實用double9 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 }