Java综合练习2

第一题:
需求:
有一对兔子,从出生后第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]);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值