2020-09-01(数组练习题)

1.定义一个数组,获取这个数组中的最小值
2.定义一个数组,数组成员10个,找出数组中最大数连同下标一起输出
3.给定一个整型数组,数组成员10个,求该数组中第二大的数的下标
4.B哥去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?
利用选择排序对数据进行降序排序

5.从控制台读入5个int型数存入数组,先将数组元素逆序输出,再对数组元素进行降序排序,然后输出排好的数组元素。

6.定义一个java一维数组如{1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}将数组中0去掉,非0的存到另一个数组中,得到结果{1,3,4,5,6,6,5,4,7,6,7,5}
package workdemo;

import java.util.Scanner;

/**
 * 定义一个数组,获取这个数组中的最小值
 * @author WDD
 *
 */

public class demo1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请问您要输入多少个数:");
		int num = sc.nextInt();
		int[] a = new int[num];
		System.out.println("请输入您要输入的数字:");
		for (int i = 0; i < a.length; i++) {
			a[i] = sc.nextInt();
		}
		for (int i = 1; i < a.length; i++) {
			if (a[0] > a[i]) {
				int temp = a[0];
				a[0] = a[i];
				a[i] = temp;
			}
		}
		System.out.println("数组中最小的数是:"+a[0]);
		sc.close();
	}

}
package workdemo;

import java.util.Scanner;

/**
 * 定义一个数组,数组成员10个,找出数组中最大数连同下标一起输出
 * @author WDD
 *
 */

public class demo2 {
	public static void main(String[] args) {
		int[] a = new int[10];
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入数组的10个数:");
		for (int i = 0; i < a.length; i++) {
			a[i] = sc.nextInt();
			
		}
		int m = 0;// 创建一个变量,负责接受最大值的下标
		int t = a[0];//创建一个变量,负责接受最大值
		
		for (int i = 1; i < a.length; i++) {
			if(a[0] < a[i]) {
				t = a[i];
				m = i;
				int temp = a[0];
				a[0] = a[i];
				a[i] = temp;
				
			} 
		}
		System.out.println("最大值为:"+t+"\n"+"最大值下标为:"+m);
		sc.close();
	}

}
package workdemo;

import java.util.Scanner;

/**
 * 给定一个整型数组,数组成员10个,求该数组中第二大的数的下标
 * @author WDD
 *
 */
public class demo3 {
	public static void main(String[] args) {
		int[] a = new int[10];
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入数组的10个数:");
		for (int i = 0; i < a.length; i++) {
			a[i] = sc.nextInt();
		}
		/**
		 * 新复制的数组不能直接用int[] b = a;
		 * 那样当数组a排序之后,数组b也会排序,因为地址指向位置一样,
		 * 应当用for循环,然后挨个赋值
		 * 或者用copyOfRange(int[] original,int from,int to)
		 * 将指定数组的指定范围复制到一个新数组。
		 * original - 将要从其复制一个范围的数组
		 * from - 要复制的范围的初始索引(包括)
		 * to - 要复制的范围的最后索引(不包括)。
		 *
		 */
		
		//赋值一个数组
		int[] b = new int[10];
		for (int i = 0; i < b.length; i++) {
			b[i] = a[i];
		}
		
		//冒泡排序
		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;
				}
			}
		}
		
		//输出打印第二大值
		for (int i = 0; i < b.length; i++) {
			if(b[i] == a[a.length - 2]) {
				System.out.println("数组中第二大值为:"+a[a.length - 2] + "\n" + "第二大值得下标为:" + i);
			}
		}
		sc.close();
	}
}




package workdemo;

import java.util.Scanner;

/**
 * B哥去参加青年歌手大奖赛,有10个评委打分,
 * (去掉一个最高一个最低)求平均分?
 * 利用选择排序对数据进行降序排序
 * @author WDD
 */
public class demo4 {
	public static void main(String[] args) {
		double[] a = new double[10];
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入B哥的10次成绩:");
		for (int i = 0; i < a.length; i++) {
			double n = sc.nextInt();
			a[i] = n;
		}
		
		//用选择排序将B哥的10次成绩进行排序
		for (int i = 0; i < a.length - 1; i++) {
			for (int j = i + 1; j < a.length; j++) {
				if (a[i] > a[j]) {
					double temp = a[i];
					a[i] = a[j];
					a[j] = temp;
				}
			}
		}
		
		//遍历一遍数组,计算B哥除去最高分和最低分的成绩
		double num = 0;
		for (int i = 1; i < a.length - 1; i++) {
			num += a[i];
		}
		
		System.err.println("B哥的平均分为" + (num/8));
		sc.close();
	}

}
package workdemo;

import java.util.Scanner;

/**
 * 从控制台读入5个int型数存入数组,
 * 先将数组元素逆序输出,再对数组元素进行降序排序,
 * 然后输出排好的数组元素.
 * @author WDD
 */
public class demo5 {
	public static void main(String[] args) {
		int[] a = new int[5];
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入5个int整型:");
		for (int i = 0; i < a.length; i++) {
			a[i] = sc.nextInt();
		}
		
		//对数组元素进行逆序输出
		for (int i = a.length - 1; i >= 0; i--) {
			System.out.print(a[i] + " ");
		}
		
		//对数组元素进行降序排列
		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();
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		sc.close();
	}
}
package workdemo;

/**
 * 定义一个java一维数组 如{1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
 * 将数组中0去掉, 非0的存到另一个数组中,
 * 得到结果{1,3,4,5,6,6,5,4,7,6,7,5}
 * @author WDD
 */
public class demo6 {
	public static void main(String[] args) {
		int[] a = { 1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5 };
		int count = 0; //定义一个常量 记录0出现的次数
		for (int i = 0; i < a.length; i++) {
			if(a[i] == 0) {
				count++;
			}
		}
		
		//定义新的数组b,长度为a数组去掉0的个数
		int[] b = new int[a.length-count];
		int j = 0; //新数组从0开始被挨个赋值
		for (int i = 0; i < a.length; i++) {
			if (a[i] != 0) {
				b[j++] = a[i];
			}
		}

		for (int i = 0; i < b.length; i++) {
			System.out.print(b[i] + " ");
		}
	}
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值