一、基础案例
题目1
定义一个含有五个元素的数组,并为每个元素赋值,求数组中所有元素的最小值.
int[] arr = new int[5];
arr[0]=43;
arr[1]=73;
arr[2]=56;
arr[3]=67;
arr[4]=12;
int min = arr[0];
for(int i=1;i<arr.length;i++) {
if(arr[i]<min) {
min = arr[i];
}
}
System.out.println("数组arr的最小值是:"+min);
题目2
定义一个长度为3的一维数组,给每个元素赋值. (要求数组中每个元素的值是0-9的随机数)
遍历数组打印每个元素的值
Random r = new Random();
int[] arr = new int[3];
for(int i=0;i<arr.length;i++) {
arr[i]=r.nextInt(10);
}
for(int i=0;i<arr.length;i++) {
System.out.println("arr["+i+"]:"+arr[i]);
}
题目3
已知数组int[] nums = {5,10,15},要求创建一个新数组
1.新数组的长度和已知数组相同
2.新数组每个元素的值 是已知数组对应位置元素的2倍
3.在控制台中打印新数组的所有元素
int[] nums = {5,10,15};
int[] arr = new int[nums.length];
for(int i=0;i<nums.length;i++) {
arr[i] = 2*nums[i];
}
for(int i=0;i<arr.length;i++) {
System.out.print("arr["+i+"]:"+arr[i]+", ");
}
System.out.println();
题目4
键盘录入一个整数,创建一个该长度的数组,为每一个元素赋值为1-10的随机整数,最后打印数组中所有值大于5且为偶数的元素.
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数做为数组的长度:");
int len = sc.nextInt();
Random r = new Random();
int[] arr = new int[len];
for(int i=0;i<arr.length;i++) {
arr[i] = r.nextInt(10)+1;
}
System.out.print("arr所有数据:");
for(int i=0;i<arr.length;i++) {
System.out.print(+arr[i]+" ");
}
System.out.println();
System.out.print("满足条件的arr数据:");
for(int i=0;i<arr.length;i++) {
if(arr[i]>5 && arr[i]%2 ==0) {
System.out.print("arr["+i+"]:"+arr[i]+" ");
}
}
System.out.println();
题目5
在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值。
请写代码实现。(不考虑小数部分)
Scanner sc = new Scanner(System.in);
int[] score = new int[6];
for(int i=0;i<score.length;i++) {
System.out.print("请输入第"+(i+1)+"位评委给出的成绩:");
score[i]=sc.nextInt();
System.out.println();
}
int sum=0;
for(int i=0;i<score.length;i++) {
sum+=score[i];
}
int min = score[0];
int max = score[0];
for(int i=1;i<score.length;i++) {
if(score[i]<min) {
min = score[i];
}else if(score[i]>max) {
max = score[i];
}
}
int average = (sum-min-max)/(score.length-2);
System.out.println("选手的最后得分为:"+average);
题目6
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
第一个月:1
第二个月:1
第三个月:2
第四个月:3
第五个月:5
…
从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和
第一个月和第二个月的兔子对数都是1
int[] arr = new int[20];
arr[0] =1;
arr[1] =1;
for(int i=2;i<arr.length;i++) {
arr[i] = arr[i-1]+arr[i-2];
}
System.out.println("第二十个月的兔子对数为:"+arr[19]);
二、扩展案例
题目1
将数字1-10保存到一个长度为10的一维数组中
定义一个新数组,长度为3,取出原来数组中随机三个元素(不考虑是否重复)
给新数组的元素赋值
求新数组所有元素的和
int[] arr = new int[10];
for(int i=0;i<10;i++) {
arr[i]=i+1;
}
int[] newArr = new int[3];
Random r = new Random();
int sum=0;
for(int i=0;i<3;i++) {
newArr[i]=arr[r.nextInt(10)];
System.out.println("随机取出的数为:"+newArr[i]);
sum+=newArr[i];
}
System.out.println("数组所有元素的和为:"+sum);
题目2
分析以下需求,并用代码实现
1.键盘录入班级人数
2.根据录入的班级人数创建数组
3.利用随机数产生0-100的成绩(包含0和100)
4.要求:
(1)打印该班级的不及格人数
(2)打印该班级的平均分
(3)演示格式如下:
请输入班级人数:
键盘录入:100
控制台输出:
不及格人数:19
班级平均分:87
Scanner sc = new Scanner(System.in);
System.out.println("请录入班级人数:");
int len = sc.nextInt();
int[] arr = new int[len];
int sum=0;
int num_bujige=0;
for(int i=0;i<arr.length;i++) {
arr[i]=(int)(Math.random()*100);
sum+=arr[i];
if(arr[i]<60) {
num_bujige+=1;
}
}
System.out.println("不及格人数:"+num_bujige);
System.out.println("班级平均分:"+sum/(arr.length+1));
题目3
假设有一个长度为5的数组,数组元素通过键盘录入,如下所示:
int[] arr = {1,3,-1,5,-2}
要求:
创建一个新数组newArr[],新数组中元素的存放顺序与原数组中的元素逆序,并且如果原数组中的元素值小于0,
在新数组中按0存储。最后输出原数组和新数组中的内容
打印格式:
请输入5个整数:
1
3
-1
5
-2
原数组内容:
1 3 -1 5 -2
新数组内容:
0 5 0 3 1
int[] arr = new int[5];
Scanner sc = new Scanner(System.in);
System.out.println("请输入第5个整数:");
for(int i=0; i<arr.length;i++) {
arr[i] = sc.nextInt();
}
System.out.println("原数组内容:");
for(int i=0; i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
int[] newArr = new int[arr.length];
for(int i=0;i<newArr.length;i++) {
if(arr[arr.length-1-i]<=0) {
newArr[i]=0;
}else {
newArr[i]=arr[arr.length-1-i];
}
}
System.out.println("新数组内容:");
for(int i=0; i<newArr.length;i++) {
System.out.print(newArr[i]+" ");
}
System.out.println();
题目4
定义长度为10的int数组,数组中的10个元素为随机生成的1-100的数字,要求:打印数组中第二大的数和第二小的数字
打印格式:
原数组内容
90 34 12 35 98 23 17 71 4 66
数组中的第二大的数字为:90
数组中的第二小的数字为:12
int[] arr = new int[10];
Random r = new Random();
for(int i=0;i<arr.length;i++) {
arr[i]=r.nextInt(100)+1;
}
int max=0;
int secondMax =0;
int min =0;
int secondMin =0;
for(int i=1;i<arr.length;i++) {
if(arr[i]>arr[max]) {
secondMax = max;
max =i;
}else if(arr[i]<arr[max] && arr[i]>arr[secondMax]) {
secondMax =i;
}
if(arr[i]<arr[min]) {
secondMin = min;
min=i;
}else if(arr[i]>min && arr[i]<arr[secondMin]) {
secondMin = i;
}
}
System.out.println("原数组内容:");
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
System.out.println("数组第二大的数字为:"+arr[secondMax]);
System.out.println("数组第二小的数字为:"+arr[secondMin]);
题目5
定义长度为10的int数组,数组中的10个元素为随机生成的1-100的数字,要求:按格式打印数组中的元素内容
举例:
数组原内容:{1,2,3,4,5}
打印的内容:[1, 2, 3, 4, 5]
int[] arr = new int[10];
Random r = new Random();
for(int i=0;i<arr.length;i++) {
arr[i]=r.nextInt(100)+1;
}
System.out.print("数组原内容:{");
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+",");
}
System.out.println("}");
System.out.print("打印的内容:[");
for(int i=0;i<arr.length;i++) {
if(i==arr.length-1) {
System.out.println(arr[i]+"]");
}else {
System.out.print(arr[i]+", ");
}
}