二白整理了一些关于数组的习题,本人也逐个完成,有需要的同学自取,答案仅供参考。
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++){//找到插入的位置,记为i
if (insert<arr[i]){//6 i=3
break;
}
}
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列的二维数组,逐个从键盘输入值,编写程序将四周的数据清0
int[][] 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列的二维数组,逐个从键盘输入值,将左下三角的值清0
int [][] 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列的二维数组,逐个从键盘输入值,将对角线的值清0
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();
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));
}
}