• 习题:数组(一)


    目录

    练习01:对10个整数进行按照从小到大的顺序排序

    练习02:求一个3*3矩阵对角线元素之和

    练习03:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    练习04:将一个数组逆序输出。

    练习05:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

    练习06:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数


    练习01:对10个整数进行按照从小到大的顺序排序

    1. /*
    2. * 练习01:对10个整数进行按照从小到大的顺序排序
    3. */
    4. public static void main(String[] args) {
    5. int[] nums = new int[] { 99, 14, 67, 24, 69, 45, 37, 83, 77, 11 };
    6. System.out.println("***************排序前***************");
    7. for (int i : nums) {
    8. System.out.print(i+" ");
    9. }
    10. for (int i = 0; i < nums.length - 1; i++) {
    11. for (int j = 0; j < nums.length - 1 - i; j++) {
    12. if (nums[j] > nums[j + 1]) {
    13. int temp = nums[j];
    14. nums[j] = nums[j + 1];
    15. nums[j + 1] = temp;
    16. }
    17. }
    18. }
    19. System.out.println("\n***************排序后***************");
    20. for (int i : nums) {
    21. System.out.print(i+" ");
    22. }
    23. }

    练习02:求一个3*3矩阵对角线元素之和

    1. /*
    2. * 练习02:求一个3*3矩阵对角线元素之和
    3. *
    4. * <提示>程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
    5. */
    6. public static void main(String[] args) {
    7. Scanner sc = new Scanner(System.in);
    8. int[][] nums = new int[3][3];
    9. for (int i = 0; i < nums.length; i++) {
    10. for (int j = 0; j < nums[i].length; j++) {
    11. System.out.println("请输入数组中nums[" + i + "][" + j + "]" + "的值:");
    12. nums[i][j] = sc.nextInt();
    13. }
    14. }
    15. System.out.println("您输入的二维数组元素是:");
    16. for (int i = 0; i < nums.length; i++) {
    17. for (int j = 0; j < nums[i].length; j++) {
    18. System.out.print(nums[i][j] + " ");
    19. }
    20. System.out.println();
    21. }
    22. int sum = 0;
    23. for (int i = 0; i < nums.length; i++) {
    24. for (int j = 0; j < nums[i].length; j++) {
    25. if (i == j && i + j != 2 || i + j == 2) {
    26. sum += nums[i][j];
    27. }
    28. }
    29. }
    30. System.out.println("您输入的二维数组对角线元素之和是:" + sum);
    31. sc.close();
    32. }

    练习03:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    1. /*
    2. * 练习03:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
    3. *
    4. * <提示>程序分析:首先判断此数第一次小于数组中哪个元素,然后将此数插入,插入后此元素之后的数,依次后移一个位置。
    5. */
    6. public static void main(String[] args) {
    7. // 已经按升序排好序的数组
    8. int[] nums = new int[] { 11, 22, 33, 44, 55 };
    9. // 新建一个比已经排好序的数组长度长1的数组
    10. int[] newNums = Arrays.copyOf(nums, nums.length + 1);
    11. System.out.println("数组插入元素前:");
    12. for (int i = 0; i < newNums.length; i++) {
    13. System.out.print(newNums[i] + " ");
    14. }
    15. Scanner sc = new Scanner(System.in);
    16. System.out.println("\n请输入你要插入的元素值(整数):");
    17. int insert = sc.nextInt();
    18. //定义插入元素的下标
    19. int index = newNums.length - 1;
    20. for (int i = 0; i < newNums.length; i++) {
    21. if (insert < newNums[i]) {
    22. index = i;//获取插入元素的下标
    23. break;
    24. }
    25. }
    26. //移动元素
    27. for (int i = newNums.length - 1; i > index; i--) {
    28. newNums[i] = newNums[i - 1];
    29. }
    30. //将插入的元素存到插入位置上
    31. newNums[index] = insert;
    32. System.out.println("数组插入元素后:");
    33. for (int i = 0; i < newNums.length; i++) {
    34. System.out.print(newNums[i] + " ");
    35. }
    36. sc.close();
    37. }

    练习04:将一个数组逆序输出

    1. /*
    2. * 练习04:将一个数组逆序输出。
    3. *
    4. */
    5. public static void main(String[] args) {
    6. int[] nums = new int[] { 12, 56, 24, 78, 33, 92 };
    7. System.out.println("逆序输出前:");
    8. for (int i = 0; i < nums.length; i++) {
    9. System.out.print(nums[i] + " ");
    10. }
    11. System.out.println("\n逆序输出:");
    12. for (int i = nums.length - 1; i >= 0; i--) {
    13. System.out.print(nums[i] + " ");
    14. }
    15. }

    练习05:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

    1. /*
    2. * 练习05:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
    3. */
    4. public static void main(String[] args) {
    5. Scanner sc = new Scanner(System.in);
    6. System.out.println("请输入你想创建的数组长度:");
    7. int length = sc.nextInt();
    8. int[] nums = new int[length];
    9. for (int i = 0; i < nums.length; i++) {
    10. System.out.println("请输入数组中的第" + (i + 1) + "个元素的值:");
    11. nums[i] = sc.nextInt();
    12. }
    13. System.out.println("您输入的数组是:" + Arrays.toString(nums));
    14. //最大的与第一个元素交换
    15. int max = nums[0];
    16. int maxIndex = 0;
    17. for (int i = 0; i < nums.length; i++) {
    18. if (nums[i] > max) {
    19. max = nums[i];
    20. maxIndex = i;
    21. }
    22. }
    23. int temp1 = nums[0];
    24. nums[0] = max;
    25. nums[maxIndex] = temp1;
    26. //最小的与最后一个元素交换
    27. int min = nums[0];
    28. int minIndex = 0;
    29. for (int i = 0; i < nums.length; i++) {
    30. if (nums[i] < min) {
    31. min = nums[i];
    32. minIndex = i;
    33. }
    34. }
    35. int temp2 = nums[nums.length - 1];
    36. nums[nums.length - 1] = min;
    37. nums[minIndex] = temp2;
    38. System.out.println("交换完数据后的数组是:" + Arrays.toString(nums));
    39. sc.close();
    40. }

    练习06:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

    1. /*
    2. * 练习06:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
    3. */
    4. public static void main(String[] args) {
    5. Scanner sc = new Scanner(System.in);
    6. System.out.println("请输入数组的长度:");
    7. int n = sc.nextInt();
    8. int[] nums = new int[n];
    9. for (int i = 0; i < nums.length; i++) {
    10. System.out.println("请输入数组中的第" + (i + 1) + "个数:");
    11. nums[i] = sc.nextInt();
    12. }
    13. System.out.print("您输入的数组为:");
    14. for (int i = 0; i < nums.length; i++) {
    15. System.out.print(nums[i] + " ");
    16. }
    17. System.out.print("\n请输入向后移动的位数:");
    18. int m = sc.nextInt();
    19. int[] newNums = new int[m];
    20. for (int i = 0; i < m; i++) {
    21. newNums[i] = nums[n - m + i];
    22. }
    23. for (int i = n - 1; i >= m; i--) {
    24. nums[i] = nums[i - m];
    25. }
    26. for (int i = 0; i < m; i++) {
    27. nums[i] = newNums[i];
    28. }
    29. System.out.print("位移后的数组是:");
    30. for (int i = 0; i < nums.length; i++) {
    31. System.out.print(nums[i] + " ");
    32. }
    33. sc.close();
    34. }

  • 相关阅读:
    C语言:求一个字符串里面有效个数
    JAVA 取出Map元素值 的三种方法
    我的DW个人网站设计——安徽宣城6页HTML+CSS+JavaScript
    『期末复习』计算机中常用术语
    性能测试:LoadRunner中事务和集合点的前后顺序
    Spring Boot 2.x系列【16】功能篇之国际化实现方案
    大师学SwiftUI第18章Part1 - 图片选择器和相机
    java家居门户网站计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    A tour of gRPC:05 - gRPC server straming 服务端流
    多个rabbitmq配置
  • 原文地址:https://blog.csdn.net/qq_51810428/article/details/126753414