Java习题——数组(二)

1. 将一个给定的整型数组转置输出,

例如: 源数组,1 2 3 4 5 6

转置之后的数组,6 5 4 3 2 1

//1. 将一个给定的整型数组转置输出,
//	例如:	源数组,1 2 3 4 5 6
//			转置之后的数组,6 5 4 3 2 1
package cn.edu.nefu;

public class Test01 {
	public static void main(String[] args) {
		int [] arr = {1,2,3,4,5,6};
		int [] arr1 = new int [arr.length];
		for(int i=0;i<arr.length;i++){
			arr1[arr.length-i-1] = arr[i];
		}
		for(int i=0;i<arr1.length;i++){
			System.out.print(arr1[i]+" ");
		}
	}
}

2.静态初始化一维数组{10,20,11,35,6,89},进行冒泡排序

//2.静态初始化一维数组{10,20,11,35,6,89},进行冒泡排序
package cn.edu.nefu;

public class Test02 {
	public static void main(String[] args) {
		int [] arr = {10,20,11,35,6,89};
		for(int i=0;i<arr.length;i++){
			int temp;
			for(int j=0;j<arr.length-i-1;j++){
				if(arr[j]>arr[j+1]){
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
	}
}

3.静态初始化二维数组 {{1},{2,3},{4,5,6}},输出每个元素的值

//3.静态初始化二维数组 {{1},{2,3},{4,5,6}},输出每个元素的值
package cn.edu.nefu;

public class Test03 {
	public static void main(String[] args) {
		int [][] arr = {{1},{2,3},{4,5,6}};
		for(int i=0;i<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				System.out.print(arr[i][j]+" ");	
			}
			System.out.println();
		}
	}
}

4、 现在有如下的一个数组:

int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;

要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:

int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5} ;

思路:生活中的问题解决 = 程序中的解决;

1、 确定出不为0的个数,这样可以开辟新数组;

扫描二维码关注公众号,回复: 4706300 查看本文章

2、 从旧的数组之中,取出内容,并将其赋给新开辟的数组;

/*4、	现在有如下的一个数组:
		int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
	要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:
		int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5} ;
思路:生活中的问题解决 = 程序中的解决;
	1、	确定出不为0的个数,这样可以开辟新数组;
	2、	从旧的数组之中,取出内容,并将其赋给新开辟的数组;*/
package cn.edu.nefu;

public class Test04 {
	public static void main(String[] args) {
		int oldArray [] = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
		int sum = 0;
		for(int i=0;i<oldArray.length;i++){
			if(oldArray[i]==0){
				sum++;
			}
		}
		int newArray [] = new int [oldArray.length-sum];
		sum=0;
		for(int i=0;i<oldArray.length;i++){
			if(oldArray[i]==0){
				sum++;
			}else{
				newArray[i-sum] = oldArray[i];
			}
		}
		for(int i=0;i<newArray.length;i++){
			System.out.print(newArray[i]+" ");
		}
	}
}

5、 现在给出两个数组:

· 数组A:{1,7,9,11,13,15,17,19}

· 数组b:{2,4,6,8,10}

      两个数组合并为数组c,按升序排列。

主要的目的是熟悉这两个操作的方法,数组扩大,必须要将原始数组的内容拷贝进去。

/*5、	现在给出两个数组:
	· 数组A:{1,7,9,11,13,15,17,19}
	· 数组b:{2,4,6,8,10}
      两个数组合并为数组c,按升序排列。
	主要的目的是熟悉这两个操作的方法,数组扩大,必须要将原始数组的内容拷贝进去。*/
package cn.edu.nefu;

import java.util.Arrays;

public class Test05 {
	public static void main(String[] args) {
		int [] A = {1,7,9,11,13,15,17,19};
		int [] B = {2,4,6,8,10};
		int [] C = Arrays.copyOf(A,A.length+B.length);
		System.arraycopy(B, 0, C, A.length, B.length);
		Arrays.sort(C);
		for(int i=0;i<C.length;i++){
			System.out.print(C[i]+" ");
		}
	}
}

6.静态初始化二维数组 {{11,15,32,21},{2,3},{4,5,6}},输出每个元素的值,并从小到大排序。

//6.静态初始化二维数组 {{11,15,32,21},{2,3},{4,5,6}},输出每个元素的值,并从小到大排序。
package cn.edu.nefu;

import java.util.Arrays;

public class Test06 {
	public static void main(String[] args) {
		int [][] arr = {{11,15,32,21},{2,3},{4,5,6}};
		int sum=0;
		for(int i=0;i<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				sum++;
			}
		}
		int [] arr1 = new int [sum];
		sum=0;
		for(int i=0;i<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				arr1[sum] = arr[i][j];
				sum++;
			}
		}
		Arrays.sort(arr1);
		for(int i=0;i<arr1.length;i++){
			System.out.print(arr1[i]+" ");
		}
	}
}

7.. *输出杨辉三角
杨辉三角如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……
杨辉三角的特点:
1. 第i 行有i 个元素
2. 每一行的第一个元素和最后一个元素都为1
3. 除了1 之外,每个元素的值,都等于上一行同位置的元素以及前一个元素的和。
例如:
1 4 6 4 1 的下一行
1 a1 a2 a3 a4 1
a1 = 4 + 1 = 5
a2 = 6 + 4 = 10
a3 = 4 + 6 = 10
a4 = 1 + 4 = 5
依次类推。
要求:读入一个整数n,输出杨辉三角的前n 行

package cn.edu.nefu;

import java.util.Scanner;

public class Test07 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个整数n:");
		int n = sc.nextInt();
		int [][] arr = new int [n][n];
		for(int i=0;i<n;i++){
			for(int j=0;j<=i;j++){
				if(j==0){
					arr[i][j]=1;
				}else{
					arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
				}
				
			}
		}
		for(int i=0;i<n;i++){
			for(int j=0;j<=i;j++){
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}
	
	

}

8. *数组的插入和删除

   定义一个长度为10的数组,通过控制台的输入5个数,

     1.向数组中指定的位置中插入一个新元素,

     2.删除指定位置的元素

package cn.edu.nefu;

import java.util.Scanner;

public class Test08 {
	public static void main(String[] args) {
		int arr [] = new int [10];
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入5个数:");
		for(int i=0;i<5;i++){
			arr[i] = sc.nextInt(); //通过控制台的输入5个数
		}
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
		System.out.println();
		
		//向数组中指定的位置中插入一个新元素
		System.out.println("请输入插入元素的位置:");
		int index = sc.nextInt();	//插入元素的位置
		System.out.println("请输入插入元素的值:");
		int num = sc.nextInt();		//插入元素的值
		int newArr [] = new int [arr.length+1];
		System.arraycopy(arr, 0, newArr, 0, index);
		newArr[index] = num;
		System.arraycopy(arr, index, newArr, index+1, arr.length-index);
		for(int i=0;i<newArr.length;i++){
			System.out.print(newArr[i]+" ");
		}
		System.out.println();
		
		//删除指定位置的元素
		int[] Arr = new int [arr.length-1];
		System.out.println("请输入删除元素的位置");
		int index1 = sc.nextInt();	//删除元素的位置
		System.arraycopy(arr, 0, Arr, 0, index1);
		System.arraycopy(arr, index1+1, Arr, index1, arr.length-index1-1);
		for(int i=0;i<Arr.length;i++){
			System.out.print(Arr[i]+" ");
		}
	}
}

猜你喜欢

转载自blog.csdn.net/sunshinecollege/article/details/84975405