• Java基础题(巩固语法)


    • 序论:学完JavaSE的大概也要回过头来刷刷题呀,巩固巩固知识,语法,反正有帮助就对了。看一看下面的Java实例程序列表吧。

    1. 斐波那契数列

    题目:

    编写一个Java程序打印斐波那契数列不使用递归和使用递归两种方法。

    例:

    输入:10

    输出:0 1 1 2 3 5 8 13 21 34

    a.递归

    1. import java.util. *;
    2. public class Solution{
    3. //递归求解斐波那契数列
    4. public static int fei(int n,int[] arr) {
    5. if(n==1)
    6. return 1;
    7. else if(n==0)
    8. return 0;
    9. return arr[n] = fei(n-1,arr) + fei(n-2,arr);
    10. }
    11. public static void main(String[] args) {
    12. Scanner reader = new Scanner(System.in);
    13. int n = reader.nextInt();
    14. int[] arr = new int[n+1];
    15. arr[0] = 0;
    16. if(n>=1)
    17. arr[1] = 1;
    18. fei(n-1,arr);
    19. //输出斐波那契数列
    20. for(int i=0;i
    21. System.out.print(arr[i] + " ");
    22. }
    23. }

    (递归求解注意,它不是求解n的时候的斐波那契值,是要把数列全部输出,那么这时递归得定义个数组存值递归)

    b.非递归

    1. import java.util. *;
    2. public class Solution{
    3. public static void main(String[] args) {
    4. Scanner reader = new Scanner(System.in);
    5. int n = reader.nextInt();
    6. int[] arr = new int[n+1];
    7. arr[0] = 0;
    8. if(n>=1)
    9. arr[1] = 1;
    10. //用非递归求解斐波那契数列
    11. for(int i=2;i
    12. arr[i] = arr[i-1] + arr[i-2];
    13. for(int i=0;i
    14. System.out.print(arr[i] + " ");
    15. }
    16. }

    (有的时候可以对比两种方法,其实也是两种思想,一个自顶向下,一个自底向上,个人觉得自底向上更贴近人的思维,但两种都得知道的噢~)

    2. 素数实例

    题目:

    编写一个Java程序来判定给的一个数字是否为素数。

    输入:44

    输出:not prime number

    输入:7

    输出:prime number

    1. import java.util. *;
    2. public class Solution{
    3. //判断是否为质数的静态方法
    4. public static boolean isPrime(int primeNum) {
    5. if(primeNum<2)
    6. return true;
    7. for(int i=2;i<=Math.sqrt(primeNum);++i) {//sqrt是Math类中的一个静态方法,数的平方根,这个和c++里math库里一样的
    8. if(primeNum%i==0)
    9. return false;
    10. }
    11. return true;
    12. }
    13. public static void main(String[] args) {
    14. Scanner reader = new Scanner(System.in);
    15. int primeNum = reader.nextInt();
    16. if(isPrime(primeNum))
    17. System.out.println("prime number");
    18. else
    19. System.out.println("not prime number");
    20. }
    21. }

    3.回文数

    题目:

    编写一个Java程序断定给定的字符串是否为一个回文数。

    输入:123

    输出:not palindrome number

    输入:12321

    输出:palindrome number

    1. import java.util. *;
    2. public class Solution{
    3. public static void main(String[] args) {
    4. Scanner reader = new Scanner(System.in);
    5. String nums = reader.next();
    6. //中心聚集思想,利用双指针向内缩
    7. int left = 0, right = nums.length()-1;
    8. int flag = 0; //用来判断是否为回文数
    9. while(left
    10. if(nums.charAt(left)==nums.charAt(right)) {
    11. --right;
    12. ++left;
    13. continue;
    14. }
    15. else {
    16. flag = 1;
    17. break;
    18. }
    19. }
    20. if(flag==0)
    21. System.out.println("palindrome number");
    22. else
    23. System.out.println("not palindrome number");
    24. }
    25. }

    4.阶乘

    题目:

    编写一个Java程序来打印数字的阶乘。

    输入:5

    输出:120

    输入:6

    输出:720

    非递归:

    1. import java.util. *;
    2. public class Solution{
    3. public static void main(String[] args) {
    4. Scanner reader = new Scanner(System.in);
    5. int n = reader.nextInt();
    6. int sum = 1;
    7. for(int i=n;i>0;--i) {
    8. sum *= i;
    9. }
    10. if(n!=0)
    11. System.out.println(sum);
    12. else
    13. System.out.println(0);
    14. }
    15. }

    递归:

    1. import java.util. *;
    2. public class Solution{
    3. private static int jieCeng(int n) {
    4. if(n==0||n==1)
    5. return 1;
    6. else
    7. return n*jieCeng(n-1);
    8. }
    9. public static void main(String[] args) {
    10. Scanner reader = new Scanner(System.in);
    11. int n = reader.nextInt();
    12. System.out.println(jieCeng(n));
    13. }
    14. }

    5.阿姆斯壮数

    题目:

    编写一个Java程序来断定一个数值是否为阿姆斯状数。(阿姆斯状数是各个位数立方和等于自身的数)

    输入:153

    输出:Armstrong number

    输入:22

    输出:not Armstrong number

    1. import java.util. *;
    2. public class Solution{
    3. public static void main(String[] args) {
    4. Scanner reader = new Scanner(System.in);
    5. int ArmNum = reader.nextInt();
    6. int temp = ArmNum;
    7. int sum = 0;
    8. while(temp!=0) {
    9. sum += (int)Math.pow(temp%10, 3);
    10. temp /= 10;
    11. }
    12. if(sum==ArmNum)
    13. System.out.println("Armstrong number");
    14. else
    15. System.out.println("not Armstrong number");
    16. }
    17. }

    6.冒泡排序

    题目:

    编写一个Java程序,使用冒泡排序算法对数组元素进行排序。

    1. import java.util.*;
    2. public class Main {
    3.   public static void main(String[] args) {
    4.     Scanner reader = new Scanner(System.in);
    5.     //输入元素入数组
    6.     ArrayList arr = new ArrayList<>();
    7.     //输入不是整数则停止输入
    8.     while(reader.hasNextInt()){
    9.         int x = reader.nextInt();
    10.         arr.add(x);
    11.     }
    12.     //冒泡排序
    13.     for(int i = 0;isize();++i){
    14.         for(int j=0;jsize()-i-1;++j){
    15.             if(arr.get(j)>arr.get(j+1)){
    16.             int temp = arr.get(j);
    17.             arr.set(j,arr.get(j+1));
    18.             arr.set(j+1,temp);
    19.             }
    20.         }
    21.     }
    22.     //输出排序好的数
    23.     for(int i=0;isize();++i)
    24.     System.out.print(arr.get(i) + " ");
    25.   }
    26. }


     

    7.选择排序

    题目:

    编写一个java程序,使用选择排序算法对数组元素进行排序。

    输入: 18 9 33 4 84 32

    输出: 4 9 18 32 33 84

    1. import java.util.*;
    2. public class Main {
    3.   public static void main(String[] args) {
    4.     Scanner reader = new Scanner(System.in);
    5.     //输入元素入数组
    6.     ArrayList arr = new ArrayList<>();
    7.     //输入不是整数则停止输入
    8.     while(reader.hasNextInt()){
    9.         int x = reader.nextInt();
    10.         arr.add(x);
    11.     }
    12.     //选择排序
    13.     int minpos = 0;
    14.     for(int i = 0;isize();++i){
    15.         minpos = i;
    16.         for(int j=i+1;jsize();++j){
    17.             if(arr.get(j)get(minpos))
    18.             minpos = j;
    19.             int temp = arr.get(i);
    20.             arr.set(i,arr.get(minpos));
    21.             arr.set(minpos,temp);
    22.             
    23.         }
    24.     }
    25.     //输出排序好的数
    26.     for(int i=0;isize();++i)
    27.     System.out.print(arr.get(i) + " ");
    28.   }
    29. }


     

    8.插入排序

    题目:

    编写一个java程序,使用插入排序算法对数组元素进行排序。

    1. import java.util.*;
    2. public class Main {
    3.   public static void main(String[] args) {
    4.     Scanner reader = new Scanner(System.in);
    5.     //输入元素入数组
    6.     ArrayList arr = new ArrayList<>();
    7.     //输入不是整数则停止输入
    8.     while(reader.hasNextInt()){
    9.         int x = reader.nextInt();
    10.         arr.add(x);
    11.     }
    12.     //插入排序
    13.     int temp, j;
    14.     for(int i = 1;isize();++i){
    15.         temp = arr.get(i);
    16.         for(j=i-1;j>=0;--j){
    17.             if(arr.get(j)>temp)
    18.             arr.set(j+1,arr.get(j));
    19.             else 
    20.             break;
    21.         }
    22.         arr.set(j+1,temp);
    23.     }
    24.     //输出排序好的数
    25.     for(int i=0;isize();++i)
    26.     System.out.print(arr.get(i) + " ");
    27.   }
    28. }

    点个小赞鼓励一下呗~

  • 相关阅读:
    PAT A1150 Travelling Salesman Problem
    【计算机毕业设计】50.课程设计管理系统
    用SD-Flasher软件烧录Superboot.bin文件无法刷机
    leetcodetop100(29) K 个一组翻转链表
    C语言之自定义类型_结构体篇(1)
    Go 重构:尽量避免使用 else、break 和 continue
    信息学奥赛一本通 1366:二叉树输出(btout)
    蓝桥杯2016年真题 | Java组
    【论文解读】Attentional Feature Fusion
    js刷题巩固之路
  • 原文地址:https://blog.csdn.net/qq_63691275/article/details/126843503