• Java数组编程练习题(面试题)


    目录

    1. 输入10位同学的java成绩:(1)求平均成绩,最高成绩、最低成绩;(2)对10的成绩按照从低到高的顺序排列(选做)

    2. 给定一个数组,判断某个元素是否在该数组中

    3. 给定一个数组,大小为10,输入十个同学的成绩,求这些成绩的总分数;某一天转入2个新同学,请再次求12个同学的平均成绩(尝试着使用扩容的形式做)

    4. 有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币

    5. 将数组中的重复数据去重

    6. 如何将10个0-10随机存入数组中

    7. 存在整数数组nums,将该数组中的所有偶数元素排列到奇数元素前

    8. 执行下列程序的输出结果为: ( D )

    9. 某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),问题:共有多少种走法?


    1. 输入10位同学的java成绩:(1)求平均成绩,最高成绩、最低成绩;(2)对10的成绩按照从低到高的顺序排列(选做)

    1. import java.util.Arrays;
    2. import java.util.Scanner;
    3. /*
    4. * 请输入10位同学的java成绩,
    5. * 1、求平均成绩,最高成绩、最低成绩
    6. * 2、对10的成绩按照从低到高的顺序排列(选做)
    7. */
    8. public class Test1 {
    9. public static void main(String[] args) {
    10. Scanner scanner = new Scanner(System.in);
    11. System.out.println("请依次输入10位同学的java成绩:");
    12. int[] arr = new int[10];
    13. for (int i = 0; i < arr.length; i++) {
    14. arr[i] = scanner.nextInt();
    15. }
    16. // 68 75 58 71 89 77 88 91 49 66
    17. System.out.print("十位同学的java成绩为:");
    18. System.out.println(Arrays.toString(arr));
    19. float averScore = findAverScore(arr);
    20. System.out.println("平均成绩为:" + averScore); // 73.2
    21. int maxScore = findMaxScore(arr);
    22. System.out.println("最大成绩为:" + maxScore); // 91
    23. int minScore = findMinScore(arr);
    24. System.out.println("最小成绩为:" + minScore); // 49
    25. // 定义一个排序函数:对10的成绩按照从低到高的顺序排列
    26. // bubbleSort(arr); // 冒泡排序
    27. // selectSort(arr); // 选择排序
    28. insertSort(arr); // 插入排序
    29. System.out.println(Arrays.toString(arr));
    30. }
    31. public static void insertSort(int[] arr) {
    32. // TODO Auto-generated method stub
    33. for (int i = 0; i < arr.length - 1; i++) {
    34. for (int j = i + 1; j > 0; j--) {
    35. if (arr[j] < arr[j - 1]) {
    36. swap(arr, j, j - 1);
    37. }
    38. }
    39. }
    40. }
    41. public static void selectSort(int[] arr) {
    42. // TODO Auto-generated method stub
    43. for (int i = 0; i < arr.length - 1; i++) {
    44. for (int j = i + 1; j < arr.length; j++) {
    45. if (arr[j] < arr[i]) {
    46. swap(arr, j, j - 1);
    47. }
    48. }
    49. }
    50. }
    51. public static void bubbleSort(int[] arr) {
    52. // TODO Auto-generated method stub
    53. for (int i = 0; i < arr.length - 1; i++) {
    54. for (int j = 0; j < arr.length - 1; j++) {
    55. if (arr[j] > arr[j + 1]) {
    56. swap(arr, j, j + 1);
    57. }
    58. }
    59. }
    60. }
    61. public static void swap(int[] arr, int i, int j) {
    62. // 异或法交互两个变量
    63. arr[i] = arr[i] ^ arr[j];
    64. arr[j] = arr[i] ^ arr[j];
    65. arr[i] = arr[i] ^ arr[j];
    66. }
    67. public static int findMinScore(int[] arr) {
    68. // TODO Auto-generated method stub
    69. int minScore = arr[0];
    70. for (int i = 0; i < arr.length; i++) {
    71. if (arr[i] < minScore) {
    72. minScore = arr[i];
    73. }
    74. }
    75. return minScore;
    76. }
    77. public static int findMaxScore(int[] arr) {
    78. // TODO Auto-generated method stub
    79. int maxScore = arr[0];
    80. for (int i = 1; i < arr.length; i++) {
    81. if (arr[i] > maxScore) {
    82. maxScore = arr[i];
    83. }
    84. }
    85. return maxScore;
    86. }
    87. public static float findAverScore(int[] arr) {
    88. // TODO Auto-generated method stub
    89. float averScore;
    90. float sum = 0;
    91. for (int i = 0; i < arr.length; i++) {
    92. sum += arr[i];
    93. }
    94. averScore = sum / arr.length;
    95. return averScore;
    96. }
    97. }

    结果:

    2. 给定一个数组,判断某个元素是否在该数组中

    1. import java.util.Arrays;
    2. import java.util.Scanner;
    3. public class Test2 {
    4. public static void main(String[] args) {
    5. /*
    6. * 给定一个数组,判断某个元素是否在该数组中
    7. */
    8. int[] arr = {68, 75, 58, 71, 89, 77, 88, 91, 49, 66};
    9. Scanner scanner = new Scanner(System.in);
    10. System.out.print("请输入一个要查找的数:");
    11. int target = scanner.nextInt();
    12. int index = binarySearch(arr, 0, arr.length - 1, target);
    13. if (index == -1) {
    14. System.out.println("很遗憾,你要找的数不在数组中!");
    15. }else {
    16. System.out.println("你要找的数在数组中!");
    17. }
    18. }
    19. public static int binarySearch(int[] arr, int start, int end, int target) {
    20. // 二分查找前提是要让arr有序
    21. Arrays.sort(arr);
    22. int mid = (start + end) >> 1;
    23. if (start <= end) {
    24. if (arr[mid] == target) {
    25. return mid;
    26. }else if (arr[mid] < target) {
    27. start = mid + 1;
    28. return binarySearch(arr, start, end, target);
    29. }else {
    30. end = mid - 1;
    31. return binarySearch(arr, start, end, target);
    32. }
    33. }
    34. return -1;
    35. }
    36. }

    结果:

    3. 给定一个数组,大小为10,输入十个同学的成绩,求这些成绩的总分数;某一天转入2个新同学,请再次求12个同学的平均成绩(尝试着使用扩容的形式做)

    1. import java.util.Arrays;
    2. import java.util.Scanner;
    3. public class Test3 {
    4. /*
    5. * 给定一个数组,大小为10,输入十个同学的成绩,求这些成绩的总分数;
    6. * 某一天转入2个新同学,请再次求12个同学的平均成绩(尝试着使用扩容的形式做)
    7. */
    8. public static void main(String[] args) {
    9. Scanner scanner = new Scanner(System.in);
    10. System.out.println("请输入10个同学的成绩:");
    11. int[] arr = new int[10];
    12. for (int i = 0; i < arr.length; i++) {
    13. arr[i] = scanner.nextInt();
    14. }
    15. int sum = sumScore(arr);
    16. System.out.println("总成绩为:" + sum);
    17. // 新转来两个,数组扩容
    18. arr = expandCapacity(arr);
    19. System.out.println(Arrays.toString(arr));
    20. sum = sumScore(arr);
    21. float aver = sum / arr.length;
    22. System.out.println("平均值为:" + aver);
    23. }
    24. public static int[] expandCapacity(int[] arr) {
    25. // 数组扩容
    26. Scanner scanner = new Scanner(System.in);
    27. System.out.print("请输入两个新同学的成绩:");
    28. int[] arr1 = new int[arr.length + 2];
    29. for (int i = 0; i < arr1.length; i++) {
    30. if (i < arr.length) {
    31. arr1[i] = arr[i];
    32. }else {
    33. arr1[i] = scanner.nextInt();
    34. }
    35. }
    36. return arr1;
    37. }
    38. public static int sumScore(int[] arr) {
    39. // 求和
    40. int sum = 0;
    41. for (int i = 0; i < arr.length; i++) {
    42. sum += arr[i];
    43. }
    44. return sum;
    45. }
    46. }

    结果:

    4. 有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币

           桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。(LeetCode)

    1. public class Test4 {
    2. /*
    3. * ·有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
    4. * {10, 8, 5, 3, 27, 99}
    5. */
    6. public static void main(String[] args) {
    7. int[] coins = {10, 8, 5, 3, 27, 99};
    8. int result = minCount(coins);
    9. System.out.println("最少" + result + "次可以拿完硬币");
    10. }
    11. public static int minCount(int[] coins) {
    12. int count = 0;
    13. for(int i = 0; i < coins.length; i++) {
    14. if(coins[i] % 2 == 0) {
    15. count += (coins[i] / 2);
    16. }else{
    17. count += (coins[i] / 2 + 1);
    18. }
    19. }
    20. return count;
    21. }
    22. }

    结果:

    5. 将数组中的重复数据去重

    笨方法,双层循环

    1. package com.openlab.day09.exer;
    2. import java.util.Arrays;
    3. public class Test5 {
    4. // 将数组中的重复数据去重
    5. public static void main(String[] args) {
    6. int[] arr = {5, 4 ,9, 5, 2, 5, 8, 4};
    7. arr = removeRepeat(arr);
    8. System.out.println(Arrays.toString(arr));
    9. }
    10. public static int[] removeRepeat(int[] arr) {
    11. // 将数组中的重复元素去除
    12. int[] temp = new int[arr.length];
    13. int count = 0;
    14. boolean isFlag = true;
    15. for (int i = 0; i < temp.length; i++) {
    16. for (int j = 0; j < temp.length; j++) {
    17. if (temp[j] == arr[i]) {
    18. isFlag = false;
    19. }
    20. }
    21. if (isFlag) {
    22. temp[count++] = arr[i];
    23. }
    24. isFlag = true;
    25. }
    26. int[] newArr = new int[count];
    27. for (int i = 0; i < newArr.length; i++) {
    28. newArr[i] = temp[i];
    29. }
    30. return newArr;
    31. }
    32. }

    结果:

    6. 如何将10个0-10随机存入数组中

    1. public class Test6 {
    2. // 如何将10个0-10随机存入数组中
    3. public static void main(String[] args) {
    4. int[] arr = new int[10];
    5. putRandomArray(arr);
    6. for (int i = 0; i < arr.length; i++) {
    7. System.out.print(arr[i] + "\t");
    8. }
    9. }
    10. private static void putRandomArray(int[] arr) {
    11. // 随机存入数组
    12. for (int i = 0; i < arr.length; i++) {
    13. int randomNum = (int)(Math.random() * 11);
    14. arr[i] = randomNum;
    15. }
    16. }
    17. }

    结果:

    7. 存在整数数组nums,将该数组中的所有偶数元素排列到奇数元素前

    1. import java.util.Arrays;
    2. public class Test7 {
    3. public static void main(String[] args) {
    4. int[] nums = {1, 4, 5, 3, 6, 7, 10};
    5. exchange(nums);
    6. System.out.println(Arrays.toString(nums));
    7. }
    8. public static void exchange(int[] nums) {
    9. int i = 0, j = nums.length - 1;
    10. while(i < j) {
    11. while(nums[i] % 2 == 0) {
    12. i++;
    13. }
    14. while(nums[j] % 2 == 1) {
    15. j--;
    16. }
    17. if (i < j) {
    18. swap(nums, i, j);
    19. }
    20. }
    21. }
    22. public static void swap(int[] nums, int i, int j) {
    23. // 交换数组中两个元素的值
    24. nums[i] = nums[i] ^ nums[j];
    25. nums[j] = nums[i] ^ nums[j];
    26. nums[i] = nums[i] ^ nums[j];
    27. }
    28. }

    结果:

    8. 执行下列程序的输出结果为: ( D )

    1. public class Test {
    2. public static void main(String[] args) {
    3. String s1 = "HelloWorld";
    4. String s2 = new String("HelloWorld");
    5. if (s1 == s2) {
    6. System.out.println("s1 == s2");
    7. }else {
    8. System.out.println("s1 != s2");
    9. }
    10. if (s1.equals(s2)) {
    11. System.out.println("s1 equals s2");
    12. } else {
    13. System.out.println("s1 not equals s2");
    14. }
    15. }
    16. }

        A. s1 == s2
            s1 not equals s2
        B. s1 == s2
            s1 equals s2
        C. s1 != s2
            s1 not equals s2
        D. s1 != s2
            s1 equals s2

    解析:字符串是一个对象,在java中 == 判断的是值是否相等,不能用来判断字符串,因为字符串的创建方式有多种,不同的创建方式,地址(指针) 可能不一致。在java中 == 判断的是值是否相等,不能用来判断字符串,字符串中 == 判断的字符串的地址,equals判断是字符串的值;s1和s2是两个不同的字符串对象,所以地址不一样,所以s1 != s2;s1 equals s2,故选D。

    9. 某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),问题:共有多少种走法?

        0 0 0 0 0 0 0 0

        0 0 0 0 0 0 0 0

        0 0 0 0 0 0 0 0

        0 0 0 0 0 0 0 0

        0 0 0 0 0 0 0 0

    暂时不会

  • 相关阅读:
    Effectively Learning Spatial Indices(VLDB)
    codeforces (C++ Simple Design)
    基于智能反射面的MIMO系统波束赋形算法代码
    Polar SI9000阻抗计算
    11月业务安全月报 | 台湾2300万人信息泄露;黑客两分钟即可破解安卓锁屏;乌克兰“IT军团”入侵俄罗斯中央银行
    Fortify-设置中文语言
    【FreeSwitch开发实践】外呼线路电话收不到回铃音问题的解决
    【每日一题】补档 CF1792C. Min Max Sort | 思维 | 简单
    手绘地图制作实例详解:如何从0到功能丰富的智慧导览系统
    【C++ 学习】库文件和头文件编写
  • 原文地址:https://blog.csdn.net/weixin_51612062/article/details/125868899