《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练习题》习题集三的主要内容,如果未能解决你的问题,请参考以下文章

JAVA习题二十五打印出杨辉三角形

JAVA习题二十五打印出杨辉三角形

Java基本语法的常见练习题

Java基础50道经典练习题——水仙花数

Java基础50道经典练习题——水仙花数

图文+视频新手也友好Java一维数组详细讲解(内含练习题答案+详解彩蛋喔~)