第一题:
需求:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问第二十个月的兔子对数为多少?
package com.itheima;
/*
* 需求:
* 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
* 假如兔子都不死,问第二十个月的兔子对数为多少?
*
* 规律:
* 第一个月:1
* 第二个月:1
* 第三个月:2
* 第四个月:3
* 第五个月:5
* ...
*
* 规律:从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和
* 第一个月和第二个月的兔子对数都是1
*
* 分析:
* A:由于数据比较多,所以我们就定义数组来实现了
* int[] arr = new int[20];
* B:给数组的元素赋值
* arr[0] = 1
* arr[1] = 2
* C:找规律
* arr[2] = arr[1] + arr[0];
* arr[3] = arr[2] + arr[1];
* arr[4] = arr[3] + arr[2];
* arr[5] = arr[4] + arr[3];
* ...
*/
public class day6Test {
public static void main(String[] args) {
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)定义一个int类型的一维数组,内容为{171,72,19,16,118,51,210,7,18}
(2)求出该数组中满足要求的元素和。
要求:求和的元素的个位和十位不能包含7,并且只能为偶数。
package com.itheima;
/*
* /*
* 需求:
* (1)定义一个int类型的一维数组,内容为{171,72,19,16,118,51,210,7,18}
* (2)求出该数组中满足要求的元素和。
* 要求:求和的元素的个位和十位不能包含7,并且只能为偶数。
*
* 分析:
* A:定义一个int类型的一维数组
* B:定义一个求和变量
* C:遍历数组,获取数组中的每一个元素
* D:判断该元素是否满足条件,如果满足条件就累加
* 假设该数据是x
* 个位不能是7:x%10 != 7
* 十位不能是7:x/10%10 != 7
* 必须是偶数:x%2 == 0
* E:输出求和结果
*/
public class day6Test2 {
public static void main(String[] args) {
int[] arr = {171,72,19,16,118,51,210,7,18};
int sum = 0;
for(int x=0; x<arr.length; x++) {
if(x%10 != 7 && x/10%10 != 7 && x%2 == 0) {
sum += arr[x];
}
}
}
}
第三题:
需求:
在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值。
请写代码实现。(不考虑小数部分)
package com.itheima;
import java.util.Scanner;
/*
* 需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
* 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值。
* 请写代码实现。(不考虑小数部分)
*
* 分析:
* A:定义一个长度为6的数组
* B:键盘录入评委的分数
* C:写方法实现获取最高分,最低分
* D:写方法求评委的分数和
* E:平均分:(和-最高分-最低分)/(arr.length-2)
* F:输出平均分即可
*/
public class day6Test3 {
public static void main(String[] args) {
int[] arr = new int[6];
Scanner sc = new Scanner(System.in);
for(int x=0; x<arr.length; x++) {
System.out.println("请输入第"+(x+1)+"评委给出的分数(0-100)");
int score = sc.nextInt();
arr[x] = score;
}
//调用方法获取最高分,最低分
int max = getMax(arr);
int min = getMin(arr);
//求和
int sum = sum(arr);
//求平均分
int avg = (sum-max-min)/(arr.length-2);
//输出
System.out.println("该选手的最终平均分为"+avg);
}
//获取最高分
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x]>max) {
max = arr[x];
}
}
return max;
}
//获取最低分
public static int getMin(int[] arr) {
int min = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x]>min) {
min = arr[x];
}
}
return min;
}
//求和
public static int sum(int[] arr) {
int sum = 0;
for(int x=0; x<arr.length; x++) {
sum += arr[x];
}
return sum;
}
}
第四题:
需求:
(1)键盘录入5个int类型的数据存储数组arr中
(2)定义方法将arr数组中的内容反转
(3)定义方法对反转后的数组进行遍历
package com.itheima;
import java.util.Scanner;
/*
* 需求:
* (1)键盘录入5个int类型的数据存储数组arr中
* (2)定义方法将arr数组中的内容反转
* (3)定义方法对反转后的数组进行遍历
*
* 分析:
* A:定义一个长度为5的数组
* B:通过键盘录入数据给数组中的元素赋值
* C:定义方法将arr数组中的内容反转
* D:定义方法对反转后的数组进行遍历
*/
public class day6Test4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int [5];
//录入数据
for(int i=0; i<arr.length; i++) {
System.out.println("请输入第"+(i+1)+"个元素值(1-5):");
int x = sc.nextInt();
arr[i] = x;
}
//反转前
print(arr);
//定义方法 实现arr数组中的内容反转
inversion(arr);
//遍历
print(arr);
}
//实现反转
public static void inversion(int[] arr) {
int temp = 0;
for(int i=0; i<arr.length; i++) {
if(i<=arr.length-i-1) {
temp = arr[i];
arr[i] = arr[arr.length-i-1];
arr[arr.length-i-1] = temp;
}
}
}
//进行遍历输出
public static void print(int arr[]) {
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]+", ");
}
}
}
}
第五题:
需求:
数组元素查找(查找指定元素第一次在数组中出现的索引)
(1)给定数组int[] arr = {5,7,3,2,5};
(2)要查询的元素通过键盘录入的方式确定
(3)定义一个查找数组元素第一次出现位置的方法(注,要查找的元素就是键盘录入的数据)
package com.itheima;
import java.util.Scanner;
/*
*需求:数组元素查找(查找指定元素第一次在数组中出现的索引)
*(1)给定数组int[] arr = {5,7,3,2,5};
*(2)要查询的元素通过键盘录入的方式确定
*(3)定义一个查找数组元素第一次出现位置的方法(注,要查找的元素就是键盘录入的数据)
*
*分析:
* A:定义数组int[] arr = {5,7,3,2,5};
* B:键盘录入一个被查询的数据
* C:写方法实现查找指定元素在数组中第一次出现的索引
* 遍历数组,依次比较元素,如果相等,就把该处的索引返回即可
* D:调用方法,输出结果
*/
public class day6Test5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = {5,7,3,2,5};
System.out.println("请输入要查找的元素值");
int a = sc.nextInt();
//定义方法查找查找指定元素在数组中第一次出现的索引
int index = locating(arr,a);
System.out.println("index:"+index);
}
public static int locating(int arr[],int a) {
for(int i=0; i<arr.length; i++) {
if(arr[i]==a) {
return i;
}
}
return -1;
}
}
第六题:
需求:
键盘录入数据,要求数据是四位的整数,现需要对数据进行加密,加密规则如下:
每位数字都加上5,然后除以10的余数代替该数字,
再将第一位和第四位交换,第二位和第三位交换,
请把加密后的数据输出到控制台
package com.itheima;
import java.util.Scanner;
/*
* 需求:键盘录入数据,要求数据是四位的整数,现需要对数据进行加密,加密规则如下:
* 每位数字都加上5,然后除以10的余数代替该数字,
* 再将第一位和第四位交换,第二位和第三位交换,
* 请把加密后的数据输出到控制台
*
* 分析:
* A:键盘录入一个4位数
* 举例:4567
* B:定义一个长度为4的数组
* int[] arr = new int[4];
* arr = {4,5,6,7};
* C:对数组中的数据进行加密规则的操作
* 每位数字都加上5,然后除以10的余数代替该数字
* arr[x] += 5;
* 结果:arr = {9,10,11,12};
* arr[x] %= 10;
* 结果:arr = {9,0,1,2};
* 再将第一位和第四位交换,第二位和第三位交换
* 结果:arr = {2,1,0,9};
* D:请把加密后的数据输出到控制台
*/
public class day6Test6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个四位数字");
int number = sc.nextInt();
int[] arr = new int [4];
//输入一个四位数分别存放到数组arr中
arr[0] = number/10/10/10%10;
arr[1] = number/10/10%10;
arr[2] = number/10%10;
arr[3] = number%10;
//进行加密
//每位数字都加上5,然后除以10的余数代替该数字
for(int i=0; i<arr.length; i++) {
arr[i] += 5;
arr[i] %= 10;
}
//再将第一位和第四位交换,第二位和第三位交换
int temp = arr[0];
arr[0] = arr[3];
arr[3] = temp;
temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
//输出
for(int i=0; i<arr.length; i++) {
System.out.print(arr[i]);
}
}
}