編程合集: https://www.cnblogs.com/jssj/p/12002760.html
Java總結:https://www.cnblogs.com/jssj/p/11146205.html
【程序21】
題目:求1+2!+3!+…+20!的和
【程序22】
題目:利用遞歸方法求5!。
/** * 【程序21】 * 題目:求1+2!+3!+…+20!的和 * 【程序22】 * 題目:利用遞歸方法求5!。 */ public class Subject21And22 { public static void main(String[] args) { long sum = factorialSum(20); System.out.println("1+2!+3!+…+20!之和:"+sum); } /** * 階乘求和 * @param num * @return */ private static long factorialSum(int num) { long sum = 0; for (int j = 1; j <= num; j++) { sum = sum+factorial(j); } return sum; } /** * 計算num的階乘! * @param num * @return */ public static long factorial(int num){ if(num == 1){ return 1; }else{ return num*factorial(num-1); } } }
運行結果:
【程序23】
題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?
/** * 【程序23】 * 題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大? */ public class Subject23 { public static void main(String[] args) { int ageNum = getAge(5); System.out.println("第五個人的年齡:"+ageNum); } /** * 獲取年齡 * @param p0 * @return */ private static int getAge(int p0) { if(p0 == 1){ return 10; }else{ return getAge(p0-1)+2; } } }
運行結果:
【程序24】
題目:給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。
/** * 【程序24】 * 題目:給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。 */ public class Subject24 { public static void main(String[] args) { System.out.println("請輸入需要分析的正整數:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); analysisInt(num); } /** * 分析正整數 * @param num */ private static void analysisInt(int num) { String tmpStr = String.valueOf(num); char[] arrStr =tmpStr.toCharArray(); System.out.println("該正整數是"+arrStr.length+"位數。"); System.out.println("倒序打印為:"); for (int i = arrStr.length-1; i >= 0; i--) { System.out.print(arrStr[i]+" "); } } }
運行結果:
【程序25】
題目:一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。
import java.util.ArrayList; import java.util.List; /** * 【程序25】 * 題目:一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。 */ public class Subject25 { private static List<Integer> list = new ArrayList<>(); public static void main(String[] args) { int num = 12321; palindromeNumber(num); if(list.get(0) == list.get(4) && list.get(1) == list.get(3)){ System.out.println("數字("+num+")是回文數"); }else{ System.out.println("數字("+num+")不是回文數"); } /***第二種方式**/ char[] arr = (num+"").toCharArray(); if(arr[0]==arr[4] && arr[1]==arr[3]){ System.out.println("數字("+num+")是回文數"); }else{ System.out.println("數字("+num+")不是回文數"); } } /** * 判斷num是否是回文數 * @param num */ private static void palindromeNumber(int num) { int lenght = (num+"").length()-1; int numTmp = 0; if(num < 10){ numTmp =num; }else{ numTmp = num/(int)Math.pow(10,lenght); int tmp =num - numTmp*(int)Math.pow(10,lenght); palindromeNumber(tmp); } list.add(numTmp); } }
運行結果:
【程序26】
題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。
import java.util.Scanner; /** * 【程序26】 * 題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。 */ public class Subject26 { public static void main(String[] args) { System.out.println("請輸入你現在心里想的哪個星期幾(只需要前兩個字母即可):"); Scanner scanner = new Scanner(System.in); String scannerStr= scanner.next(); //判斷輸入的星期幾 weekDay(scannerStr); } /** * 判斷輸入的星期的星期幾 * @param scannerStr */ private static void weekDay(String scannerStr) { char[] scannerArr = scannerStr.toCharArray(); switch (scannerArr[0]){ case 'M': System.out.println("您輸入的星期一"); break; case 'T': switch (scannerArr[1]){ case 'U': System.out.println("您輸入的星期二"); break; case 'H': System.out.println("您輸入的星期四"); break; default: System.out.println("您輸入的不是星期,請重新輸入:"); Scanner scanner = new Scanner(System.in); scannerStr= scanner.next(); //判斷輸入的星期幾 weekDay(scannerStr); } break; case 'W': System.out.println("您輸入的星期三"); break; case 'F': System.out.println("您輸入的星期五"); break; case 'S': switch (scannerArr[1]){ case 'A': System.out.println("您輸入的星期六"); break; case 'U': System.out.println("您輸入的星期天"); break; default: System.out.println("您輸入的不是星期,請重新輸入:"); Scanner scanner = new Scanner(System.in); scannerStr= scanner.next(); //判斷輸入的星期幾 weekDay(scannerStr); }break; default: System.out.println("您輸入的不是星期,請重新輸入:"); Scanner scanner = new Scanner(System.in); scannerStr= scanner.next(); //判斷輸入的星期幾 weekDay(scannerStr); } } }
運行結果:
【程序27】
題目:對10個數進行排序
import java.util.Scanner; /** * 【程序27】 * 題目:對10個數進行排序 */ public class Subject27 { public static void main(String[] args) { System.out.println("請輸入10個整數:"); Scanner scanner = new Scanner(System.in); int[] arr = new int[10]; for (int i = 0; i <10 ; i++) { System.out.println("請輸入第"+(i+1)+"個數:"); int num = scanner.nextInt(); arr[i] = num; } sortInt(arr); } /** * 對數組arr進行排序 * @param arr */ private static void sortInt(int[] arr) { int tmp = 0; for(int i =0 ;i<arr.length;i++){ for (int j = i+1; j <arr.length ; j++) { if(arr[i] > arr[j]){ tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } System.out.println("從小到大排序為:"); for (int i = 0; i <arr.length ; i++) { System.out.print(arr[i]+" "); } } }
運行結果:
【程序28】
題目:求一個3*3矩陣對角線元素之和
import java.util.Random; /** * 【程序28】 * 題目:求一個3*3矩陣對角線元素之和 */ public class Subject28 { public static void main(String[] args) { Random random = new Random(); int[][] arr = new int[3][3]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { arr[i][j] = random.nextInt(10); } } seekDiagonalSum(arr); } /** * 計算矩陣對角線之后 * @param arr */ private static void seekDiagonalSum(int[][] arr) { int slash = 0; int backSlash = 0; for (int i = 0; i < arr.length; i++) { slash = slash + arr[i][i]; } System.out.println("隨機生成的3*3的矩陣為:"); for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length ; j++) { System.out.print(arr[i][j] + " "); if(i+j == arr.length-1){ backSlash += arr[i][j]; } } System.out.println(""); } System.out.println("正向對角線之和:"+slash); System.out.println("反向對角線之和:"+backSlash); } }
運行結果:
【程序29】
題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。
import java.util.Scanner; /** * 【程序29】 * 題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。 */ public class Subject29 { public static void main(String[] args) { int[] arr = new int[]{1,2,3,4,5,6,7,8,0}; System.out.println("請輸入一個1到8之間的數:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); for (int i = 0; i < arr.length-2 ; i++) { if(num >= arr[i] && num <= arr[i+1] ){ for (int j = arr.length-1; j > i+1 ; j--) { arr[j] = arr[j-1]; } arr[i+1] = num; break; } } System.out.print("插入數字("+num+")之后的數組為:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } } }
運行結果:
【程序30】
題目:將一個數組逆序輸出。
/** * 【程序30】題目:將一個數組逆序輸出。 */ public class Subject30 { public static void main(String[] args) { int[] arr = new int[]{1,2,3,4,5,6,7,8,9}; System.out.println("順序打印:"); printArray(arr); reverseOrder(arr); } /** * 將arr數組逆序處理 * @param arr */ private static void reverseOrder(int[] arr) { int tmp = 0; for (int i = 0; i < arr.length/2 ; i++) { tmp = arr[i]; arr[i] = arr[arr.length-1-i]; arr[arr.length-1-i] = tmp; } System.out.println("逆序打印:"); printArray(arr); } /** * 打印數組 * @param arr */ private static void printArray(int[] arr) { for (int i = 0; i < arr.length ; i++) { System.out.print(arr[i]+" "); } System.out.println(); } }
運行結果:
參考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001