练习题
- 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问第二十个月的兔子对数为多少?
/*
1,1,2,3,5,8,13.....
0 1 2 3 4 5 6
*/
public class Test {
public static void main(String[] args) {
/*int a = 1;
int b = 1;
int sun = a+ b;
*/
//用数组来存储兔子对数
int[] arr = new int[20];
//第一个月和第二个月兔子对数
arr[0]=1;
arr[1]=1;
//
for (int i = 2; i < arr.length; i++) {
arr[i]=arr[i-2]+arr[i-1];//兔子的增长规律
}
System.out.println("第十九个月不死神兔的对数为:"+arr[19]+" 对");
}
}
-
List item
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
/*
*/
public class Test {
public static void main(String[] args) {
//x 为公鸡,y为母鸡,z为小鸡
for(int x =0 ;x < 20;x++){
for( int y = 0;y<33;y++){
int z = 100 -x -y;
if(z%3==0 && 5*x+3*y+z/3==100){
System.out.println("公鸡,母鸡,小鸡的数量各是:"+x+","+y+","+z);
}
}
}
}
}
- 朋友聚会的时候可能会玩一个游戏:逢七过。
规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过。
为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过规则的数据。
这样,大家将来在玩游戏的时候,就知道哪些数据要说:过。
/*
*/
public class Test_01 {
public static void main(String[] args) {
for (int i = 1; i < 100; i++) {
if (i % 10 == 7 || i / 10 % 10 == 7 || i % 7 == 0) {
System.out.print("过 ");
}else{
System.out.print(i+" ");
}
}
}
}
- 在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。
package 基础练习.a.评委打分;
/*
*/
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[6];
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第" + (i + 1) + "位评委的打分");
arr[i] = sc.nextInt();
}
//调用对应方法求得去掉最值后的平均分
int max = getMax(arr);
int min = getMin(arr);
int sum = getSum(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 i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
//定义取得最小值方法
public static int getMin(int[] arr) {
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > min) {
min = arr[i];
}
}
return min;
}
//定义求和方法
public static int getSum(int[] arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
}
- 定义一个10个数的数组,元素为1-100的随机数
在定义一个数组,要求把上面的数组放到新数组中
奇数在左边,偶数在右边
import java.util.Random;
/*
*/
public class S002 {
public static void main(String[] args) {
Random ra = new Random();
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
arr[i] = ra.nextInt(100) + 1;
}
int[] arr1 = new int[arr.length ];
int start = 0;
int end = arr.length-1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
arr1[start] = arr[i];
start++;
} else {
arr1[end] = arr[i];
end--;
}
}
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]+" ");
}
}
}
- 数组{15,20,339,33,42,453,5,94,59,62} 最大数与第一位更换位置,最小数与最后一位更换位置,遍历效果
/**/
public class S003 {
public static void main(String[] args) {
int[] arr = new int[]{15, 20, 339, 33, 42, 453, 5, 94, 59, 62};
//定义最值及对应索引初始化
int max = arr[0];
int min = arr[0];
int indexMax = 0;
int indexMin = 0;
for (int i = 0; i < arr.length; i++) {
//获取最值及对应索引值
if (max < arr[i]) {
max = arr[i];
indexMax = i;
}
if (min > arr[i]) {
min = arr[i];
indexMin = i;
}
}
//元素更换
int t1 = arr[indexMax];
arr[indexMax] = arr[0];
arr[0] = t1;
int t2 = arr[arr.length - 1];
arr[arr.length - 1] = arr[indexMin];
arr[indexMin] = t2;
//遍历效果
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
- 定义一个长度为是数组,元素为1-100之间的随机数,求出数组中元素大于数组中的元素平均值的值有多少个
/**/
import java.util.Random;
public class S004 {
public static void main(String[] args) {
Random ra = new Random(); //创建随机数对象
int[] arr = new int[10]; //定义10个数的数组
double sum = 0; //定义求和
int count = 0; //定义计数器初始化,后续统计
for (int i = 0; i < arr.length; i++) {
arr[i] = ra.nextInt(100) + 1; //获取元素范围是1-100
sum += arr[i]; //数组元素求和
}
for (int i = 0; i < arr.length; i++) { //遍历数组
if (arr[i] > (sum / 10)) { //判断元素与平均值的大小
count++;
}
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.println("平均数为:"+(sum/10));//打印个数
System.out.println("大于平均值的元素有" + count + "个");
}
}