《java练习题》习题集三
Posted jssj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《java练习题》习题集三相关的知识,希望对你有一定的参考价值。
【程序21】
题目:求1+2!+3!+…+20!的和
【程序22】
题目:利用递归方法求5!。
/** * 【程序21】 * 题目:求1+2!+3!+…+20!的和 * 【程序22】 * 题目:利用递归方法求5!。 */ public class Subject21And22 public static void main(String[] args) int sum = factorialSum(20); System.out.println("1+2!+3!+…+20!之和:"+sum); /** * 阶乘求和 * @param num * @return */ private static int factorialSum(int num) int sum = 0; for (int j = 1; j <= num; j++) sum = sum+factorial(j); return sum; /** * 计算num的阶乘! * @param num * @return */ public static int 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
以上是关于《java练习题》习题集三的主要内容,如果未能解决你的问题,请参考以下文章