Java数组练习题百元百鸡,不死神兔

1、朋友聚会的时候可能会玩一个游戏:逢七过。
​ 规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过。
​ 为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过规则的数据。

 for (int i = 1; i <=100 ; i++) {
            int ge =i%10;
            int shi = i/10%10;
            //如果个位或者十位是7或者7的倍数 就跳过
            if(ge == 7 || shi == 7 || i%7 == 0){
                continue;
            }
            System.out.print(i+" ");
        }


2、有一个很有名的数学逻辑题叫做不死神兔问题。有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?

		int []  tu = new int [20];
        tu[0] = 1;
        tu[1] = 1;
        //兔子的对数  等于欠两个月兔子对数的和
        for (int i = 2; i < tu.length; i++) {
            tu[i] = tu[i-2] + tu[i-1];
        }
        System.out.println("第20个月有"+tu[19]+"对兔子");

3、我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
​ 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?列出各种可能

		int xiao = 0;
        for (int i = 0; i < 20; i++) {
            for (int j = 0; j < 33; j++) {
            //100只鸡,减去公鸡和母鸡的只数
                xiao = 100 - i - j;
                //小鸡 一钱三只,所以小鸡的数量必须能被三整除
                if(xiao%3 == 0 ){
                    if (i*5 + j*3 + xiao/3 == 100)
                    System.out.println(i+" " + j +"  "+ xiao);
                }
            }
        }

4、有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和,
要求是:求和的元素个位和十位都不能是7,并且只能是偶数。

		int [] arr = {68,27,95,88,171,996,51,210};
        int res = 0;
        for (int i = 0; i < arr.length; i++) {
            int ge = arr[i] %10;
            int shi = arr[i] /10%10;
            //个位和十位不等于7,并且是偶数
            if (ge != 7 && shi != 7 && arr[i]%2 ==0){
                res += arr[i];
                System.out.print(arr[i]+"   ");
            }
        }
        System.out.println();
        System.out.println(res);

5、设计一个方法,用于比较两个数组的内容是否相同。

    public static boolean fa(int [] arr,int [] arr1) {
        //判断数组元素个数
        if (arr.length == arr1.length) {
            //遍历数组
            for (int i = 0; i < arr.length; i++) {
                //如果元素不同就返回false
                if (arr[i] != arr1[i]) {
                    return  false;
                }
            }
        }
        return  true;
    }
        public static void main (String[]args){
            int[] arr = {156, 15, 235, 159, 123, 147, 369};
            int[] arr1 = {156, 15, 35, 159, 123, 147, 369};
            boolean a =fa(arr,arr1);
            if(a){
                System.out.println("数组元素相同");
            }else{
                System.out.println("数组元素不同");
            }
        }

6、已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据。定义一个方法,完成查找该数据在数组中的索引,并在控制台输出找到的索引值。

		public static void fa(int[] arr,int a){
        for (int i = 0; i < arr.length; i++) {
        //判断数组元素中是否有该数值
            if(arr[i] == a){
                System.out.println("数值索引是"+i);
                return;
            }
        }
        System.out.println("找不到这个值");
    }

    public static void main(String[] args) {
        int [] arr = {19, 28, 37, 46, 50};
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要找的数值");
        int num = sc.nextInt();
        fa(arr,num);

7、 已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值反转(在原数组中操作,不能定义第二个数组),反转后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出反转后的数组元素。

		    public static void fa(int [] arr){
        int num = 0;
        //数组元素长度/2,就是需要交换的次数
        for (int i = 0; i < arr.length/2; i++) {
            num = arr[i];
            arr[i] = arr[arr.length -1 -i ] ;
            arr[arr.length -1 -i ]  = num;
        }
        //遍历输出数组
        for (int j = 0; j < arr.length; j++) {
            System.out.print(arr[j]+ " ");
        }
        System.out.println();

    }
    public static void main(String[] args) {
        int [] arr = {19, 28, 37, 46, 50};
        fa(arr);
    }

8、在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。

		int num = 0;
        int [] arr = new int[6];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 6; i++) {
            System.out.println("请第"+(i+1)+"位评委打分");
            arr[i] = sc.nextInt();
        }
        //快速排序,从小到大
        Arrays.sort(arr);
        //遍历求和,忽略第一个元素和最后一个元素
        for (int j = 1; j < arr.length -1 ; j++) {
            num += arr[j];
        }
        System.out.println("平均分为:"+(num/4));
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值