二白整理了一些关于数组的习题,本人也逐个完成,有需要的同学自取,答案仅供参考。
01:对10个整数进行按照从小到大的顺序排序
package Practise;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/8 13:24* QQ:1512015112* VX:18056394367*/public class Demo01 {public static void main(String[] args) {
// 01:对10个整数进行按照从小到大的顺序排序int[] arr = {5,35,24,56,37,98,45,87,22,13};int[] newArr = new int[1];for (int i = 0;i<arr.length;i++){for (int j = i; j < arr.length; j++) {if (arr[i]>=arr[j]){newArr[0]=arr[i];arr[i]=arr[j];arr[j]=newArr[0];}}}for (int a : arr){System.out.println(a+" ");}}
}
02:求一个3*3矩阵对角线元素之和
<提示>程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
package Practise;import java.util.Scanner;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/8 13:53* QQ:1512015112* VX:18056394367*/public class Demo02 {public static void main(String[] args) {
// 02:求一个3*3矩阵对角线元素之和
// <提示>程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。Scanner scanner =new Scanner(System.in);double sum = 0;double[][] a = new double[3][3];System.out.println("请输入一个3*3矩阵");for (int i =0;i<a.length;i++){System.out.println("第"+(i+1)+"行");for (int j =0;j<a[i].length;j++){a[i][j] = scanner.nextDouble();if (i==j){sum = sum+a[i][j];}}}System.out.println(sum);}
}
03:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
<提示>程序分析:首先判断此数第一次小于数组中哪个元素,然后将此数插入,插入后此元素之后的数,依次后移一个位置。
package Practise;import java.util.Scanner;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/8 13:54* QQ:1512015112* VX:18056394367*/public class Demo03 {public static void main(String[] args) {
// 03:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
// <提示>程序分析:首先判断此数第一次小于数组中哪个元素,然后将此数插入,插入后此元素之后的数,依次后移一个位置。int[] arr = {1,3,5,8,10,23,28,45};int[] newArr = new int[arr.length+1];int i =0,j;Scanner scanner = new Scanner(System.in);System.out.println("请输入你要插入的数");int insert = scanner.nextInt();for (i=0;i< arr.length;i++){//先把数组中所有的数都复制到新数组里,这样新数组里就有了一个多余的空间newArr[i]=arr[i];}for ( i = 0;i<arr.length;i++){//找到插入的位置,记为iif (insert<arr[i]){//6 i=3break;}}for (j=arr.length;j>i;j--){//把倒数第二个换到倒数第一个,依次到i的位置newArr[j]=arr[j-1];}newArr[i]=insert;//要插入的数据插到i的位置for (int a:newArr){//输出新数组System.out.println(a);}}
}
04:将一个数组逆序输出。
package Practise;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/8 16:42* QQ:1512015112* VX:18056394367*/public class Demo04 {public static void main(String[] args) {
// 04:将一个数组逆序输出。int[] arr = {1,3,5,8,10,23,28,45};int[] newArr = new int[arr.length];for (int i = arr.length-1, j =0;i>=0;i--,j++){newArr[j] =arr[i];}for (int a : newArr){System.out.println(a);}}
}
05:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
package Practise;import java.util.Arrays;
import java.util.Scanner;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/8 16:56* QQ:1512015112* VX:18056394367*/public class Demo05 {// TODO: 2024/4/9 如何实现未知数组长度的情况下一直输入public static void main(String[] args) {
// 05:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。int m=0,l=0;Scanner scanner = new Scanner(System.in);System.out.println("请输入数组长度");int n = scanner.nextInt();int[] a = new int[n];for (int i = 0;i<a.length;i++){System.out.println("请输入数组");a[i]= scanner.nextInt();int max = a[0];int min = a[0];if (a[i]>max){max=a[i];m=i;}if (a[i]<min){min=a[i];l=i;}}int temp=a[0];a[0]=a[m];a[m]=temp;temp=a[a.length-1];a[a.length-1]=a[l];a[l]=temp;System.out.println(Arrays.toString(a));}}
06:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
package Practise;import java.util.Scanner;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/8 17:02* QQ:1512015112* VX:18056394367*/public class Demo06 {public static void main(String[] args) {
// 06:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数Scanner scanner = new Scanner(System.in);System.out.println("请输入要后移的位数");int a = scanner.nextInt();int[] arr = {1,3,5,8,10,23,28,45};int[] newArr = new int[arr.length];while (a>arr.length){System.out.println("输入错误,请重新输入");a = scanner.nextInt();}for (int i = arr.length - a, j = 0; i < arr.length; i++, j++) {newArr[j] = arr[i];}for (int i = 0, j = a; i < arr.length - a; i++, j++) {newArr[j] = arr[i];}for (int b : newArr){System.out.println(b);}}
}
07:定义一个4行4列的二维数组,逐个从键盘输入值,然后将第1行和第4行的数据进行交换,将第2行和第3行的数据进行交换
package Practise;import java.util.Arrays;
import java.util.Scanner;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/8 17:20* QQ:1512015112* VX:18056394367*/public class Demo07 {public static void main(String[] args) {// 07:定义一个4行4列的二维数组,逐个从键盘输入值,然后将第1行和第4行的数据进行交换,将第2行和第3行的数据进行交换int [][] a = new int[4][4];System.out.println("请输入数组");Scanner scanner = new Scanner(System.in);for (int i =0;i<a.length;i++){System.out.println("请输入第"+(i+1)+"行数字");for (int j = 0;j<a[i].length;j++){a[i][j]= scanner.nextInt();}}for(int i =0;i<a.length;i++){int temp = a[0][i];a[0][i]=a[3][i];a[3][i]=temp;}for(int i =0;i<a.length;i++){int temp = a[1][i];a[1][i]=a[2][i];a[2][i]=temp;}for (int i = 0; i < a.length; i++) {for (int i1 = 0; i1 < a[i].length; i1++) {System.out.print(a[i][i1]+" ");}System.out.println();}}
}
08:定义一个3行4列的二维数组,逐个从键盘输入值,编写程序将四周的数据清0
package Practise;import java.util.Scanner;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/9 19:11* QQ:1512015112* VX:18056394367*/public class Demo08 {public static void main(String[] args) {
// 08:定义一个3行4列的二维数组,逐个从键盘输入值,编写程序将四周的数据清0int[][] a = new int[3][4];Scanner scanner = new Scanner(System.in);System.out.println("请输入数组");for (int i=0;i<a.length;i++){System.out.println("第"+(i+1)+"行");for (int j=0;j<a[i].length;j++){a[i][j] = scanner.nextInt();if (i==0||i==a.length-1||j==0||j==a[i].length-1){a[i][j]=0;}}}for (int i = 0; i < a.length; i++) {for (int i1 = 0; i1 < a[i].length; i1++) {System.out.print(a[i][i1]+" ");}System.out.println();}}
}
09:定义一个3行4列的二维数组,逐个从键盘输入值,将左下三角的值清0
package Practise;import java.util.Arrays;
import java.util.Scanner;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/9 19:39* QQ:1512015112* VX:18056394367*/public class Demo09 {public static void main(String[] args) {
// 09:定义一个3行4列的二维数组,逐个从键盘输入值,将左下三角的值清0int [][] a = new int[3][4];Scanner scanner = new Scanner(System.in);System.out.println("请输入数组");for (int i = 0;i<a.length;i++){System.out.println("第"+(i+1)+"行");for (int j = 0; j < a[i].length; j++) {a[i][j] = scanner.nextInt();if ((i==a.length-2&&j==0)||(i==a.length-1&&j==0)||(i==a.length-1&&j==1)){a[i][j]=0;}}}for (int[] b:a){System.out.println(Arrays.toString(b));}}
}
10:定义一个4行4列的二维数组,逐个从键盘输入值,将对角线的值清0
package Practise;import java.util.Arrays;
import java.util.Scanner;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/9 19:56* QQ:1512015112* VX:18056394367*/public class Demo10 {public static void main(String[] args) {
// 10:定义一个4行4列的二维数组,逐个从键盘输入值,将对角线的值清0int [][] a = new int[4][4];System.out.println("请输入数组");Scanner scanner = new Scanner(System.in);for (int i = 0; i < a.length; i++) {System.out.println("第"+(i+1)+"行");for (int j = 0; j < a[i].length; j++) {a[i][j]= scanner.nextInt();if (i==j){a[i][j]=0;}}}for (int[] b:a){System.out.println(Arrays.toString(b));}}
}
11:定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出;
package Practise;import java.util.Arrays;
import java.util.Scanner;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/9 20:06* QQ:1512015112* VX:18056394367*/public class Demo11 {public static void main(String[] args) {
// 11:定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出;System.out.println("输入n的值");Scanner scanner = new Scanner(System.in);int n= scanner.nextInt();int [][] a= new int[n][n];int []b=new int[n];for (int i = 0; i < a.length; i++) {System.out.println("第"+(i+1)+"行");for (int j = 0; j < a[i].length; j++) {a[i][j]= scanner.nextInt();}Arrays.sort(a[i]);b[i]=a[i][n-1];}for (int c : b){System.out.print(c+" ");}}
}
12:从键盘上输入一个 3*4 的整型数组,求出其中的最大值和最小值,并显示出
package Practise;import java.util.Scanner;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/9 20:22* QQ:1512015112* VX:18056394367*/public class Demo12 {public static void main(String[] args) {
// 12:从键盘上输入一个 3*4 的整型数组,求出其中的最大值和最小值,并显示出int [][] a = new int[3][4];int max=0 ,min=0;System.out.println("请输入数组");Scanner scanner = new Scanner(System.in);for (int i = 0; i < a.length; i++) {System.out.println("第"+(i+1)+"行");for (int j = 0; j < a[i].length; j++) {a[i][j]= scanner.nextInt();if (i==0){max = a[0][0];min = a[0][0];}if (a[i][j]>max){max=a[i][j];}if (a[i][j]<min){min=a[i][j];}}}System.out.println(max);System.out.println(min);}
}
13:有10个数字要求分别用选择法和冒泡法从大到小输出
package Practise;import java.util.Arrays;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/9 20:34* QQ:1512015112* VX:18056394367*/public class Demo13 {public static void main(String[] args) {
// 13:有10个数字要求分别用选择法和冒泡法从大到小输出//冒泡排序int[] a ={1,22,6,2,75,43,34,56,14,9};for (int i = 0;i<a.length-1;i++){for (int j =0;j<a.length-1-i;j++){if (a[j]<a[j+1]){int temp = a[j];a[j]=a[j+1];a[j+1]=temp;}}}System.out.println(Arrays.toString(a));}
}
package Practise;import java.util.Arrays;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/9 20:50* QQ:1512015112* VX:18056394367*/public class Demo13$2 {public static void main(String[] args) {
// 13:有10个数字要求分别用选择法和冒泡法从大到小输出//选择法int[] a ={1,22,6,2,75,43,34,56,14,9};for (int i = 0; i < a.length-1; i++) {for (int j = i+1; j < a.length; j++) {if (a[i]<a[j]){int temp = a[i];a[i]=a[j];a[j]=temp;}}}System.out.println(Arrays.toString(a));}
}