青鸟2022924数组练习(8道)

//1. 下列数组的声明有哪些是对的?错的应该怎么修改?
	A. int[] a;B. int a[] = new int[3];C. int[] a; a = {1,2,3,4,5}; 	×  int [] a; a=new int [5];
	D. int[] a = new int[3]{1,2,3};  × 	int[] a = {1,2,3};
//2. 写一个函数,计算一个整数数组的平均值 
    public static void main(String[] args) {
        int [] a={1,2,3};
        int sum=0;
        int b=0;
        for(int i=0; i<a.length;i++){
            sum+=a[i];
            b=sum/ a.length;
        }
        System.out.println(b);
    }
//3. 自定义一个整数数组 a,读入一个整数 n,如果 n 在数组中存在,则输出 n 的下标;如果 
不存在,则输出-1import java.util.Scanner;
public class DuQuShuZuXiaBiao {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        boolean flag = false;//标记
		//int[] a = new int[] {1 ,2 ,3 ,4 ,5 ,6 ,7};//新建a数组
        int[] a ={1 ,2 ,3 ,4 ,5 ,6 ,7};//新建a数组
        System.out.print("请输入一个数字:");
        int n = sc.nextInt();
        for (int i = 0; i < a.length; i++) {//数组遍历
            if (a[i] == n) {//判断数组中是否存在n
                System.out.println("该数存在于数组中,下标为:" + i);
                flag = true;//存在,继续执行
            }
        }
        if (flag == false) {//n不存在数组中,打印-1
            System.out.println(-1);
        }
    }
//4.给定一个数组,输出数组中的最大值和最小值 
public class Max_Min {
    public static void main(String[] args) {
        int[] a = new int[] {1, 2, 655, 34, 98, 66};//定义数组
        int max = a[0];//默认第一个数,让其他数和第一个数作比较,之后交换
        int min = a[0];
        for (int i = 1; i < a.length; i++) {//遍历数组
            if (a[i] > max) {//判断
                max = a[i];//判断后交换最大值
            }
            if (a[i] < min) {
                min = a[i];
            }
        }
        System.out.println("该数组中最大值为:" + max);
        System.out.println("该数组中最小值为:" + min);
    }
}

//课上讲的方法
public static void c ( ) {
	int[] a = { 23,15,42,52,83,75,96,86};
	Arrays.sort(a) ;
	system.out.println (a [0]+""+a[a.length-l]);
}
//5.给定一个数组,把这个数组中所有元素顺序进行颠倒。
public class ShuZuInverse {
	  public static void main(String[] args) {
	      int[] arr={4,1,2,3,6,7};//原数组
	      for(int a : arr){
	          System.out.print(a +"\t");
	      }
	
	      System.out.println();
	
	      int[] new_arr=new int[arr.length];//新数组---存储逆序之和的结果
	      for(int i=0;i<arr.length;i++){//遍历原数组
	          new_arr[arr.length-1-i]=arr[i];//按照下标规律给新数组对应位置的元素进行赋值
	      }
	//    arr = new_arr; //地址值的赋值???????????????????????????????????????????/
	      new_arr = arr;
	      for(int b : new_arr){
	          System.out.print(b +"\t");
	      }
	  }
}
//6.十五个猴子围成一圈选大王,依次 1-7 循环报数,报到 7 的猴子被淘汰,直到最后一只猴子成为大王。问,哪只猴子最后能成为大王?
public class yy {
    public static void main(String[] args) {
        int [] ms = new int[15];//0:猴子存在1:淘汰{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
        int count = 15;//初始猴子个数
        int number = 0;//报数
        int index = 0;//下标
        while (count != 1) {
            if (ms[index] == 0) { //判断该位置的猴子是否存在
                number++;
                if (number == 7) {
                    ms[index] = 1;//淘汰
                    count--;//剩余猴子减一
                    number = 0;//猴子报数从头开始
                }
            }
            index++;//下标加一,使下一个猴子报数
            if (index == ms.length) { //如果最后一只猴子报数结束后,下标从0开始index = 0;
                index = 0;
            }
        }
        for (int i = 0; i < ms.length; i++) {
            if (ms[i] == 0) {
                System.out.println("第" + (i + 1) + "只猴子称王");
                break;
            }
        }
    }
}
//7. 数学黑洞 6174 
	已知:一个任意的四位正整数。将数字重新组合成一个最大的数和最小的数相减,重复 这个过程,最多七步, 必得 6174。即:7641-1467=6174。将永远出不来。 
	求证:所有四位数数字(全相同的除外),均能得到 6174。输出掉进黑洞的步数。
public static void HeiDong() {
	Scanner sc = new Scanner (system.in);
	System. out.println ("请输入一个四位数");
	int n = sc.nextInt () ;
	while(n != 6174){
		int[]a = new int[4];
		for(int i=0;i<a.length; i++){//一共四位,i从0加到3就行
			a [i] = n%10;//  7%3=1
			n /= 10;//       7/3=2
		}
		Arrays.sort(a) ;
		int min = a[0]*1000+a [1]*100+a[2]*10+a[3];
		int max = a[3]*1000+a [2]*100+a[1]*10+a[0];
		n = max - min;
		system.out.println (max+" - "+min+" = "+n);
	}
} 
//8、int[] a = {23,61,37,47,28,58,59,95,48},使用选择排序方式对数组进行排序
public class XuanZePaiXu {
    public static void main(String[] args) {
        int[] array = {23, 61, 37, 47, 28, 58, 59, 95, 48};
        for (int i=0; i<array.length-1; i++) {//控制轮数
            for (int j=i+1; j<array.length; j++) {//控制一轮比较次数
                if (array[i] < array[j]) {
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
        for (int b : array) {//增强循环
            System.out.println(b);
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值