Java基础练习题03 数组

这段代码集展示了多种数组操作,包括统计成绩等级分布、分离奇偶数、查找最大值及其下标、获取第二大连同下标、计算平均分、数组排序、数组反转、移除数组中的零元素、数组合并以及查找数组中只在一个数组中出现的元素。这些操作涵盖了基本的数组遍历、条件判断、数据处理和算法应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、定义一个数组来存储12个学生的成绩{72,89,65,58,87,91,53,82,71,93,76,68},
统计各成绩等级(90分以上为‘A’,8089分为‘B’,7079分为‘C’,60~69分为‘D’,60分以下为E)学生人数,
并将其放入到数组count中,其中:count[0]存E级的人数,count[1]存D级的人数,……,count[4]存A级的人数

public static void main(String[] args) {
        int[] count=new int[5];
        int[] a={72,89,65,58,87,91,53,82,71,93,76,68};
        for (int i = 0; i < a.length; i++) {
            if (a[i]>=90){
                count[4]++;
            }else if (a[i]>=80&& a[i]<90){
                count[3]++;
            }else if (a[i]>=70&& a[i]<80){
                count[2]++;
            }else if (a[i]>=60&& a[i]<70){
                count[1]++;
            }else {
                count[0]++;
            }
        }
        System.out.println("90分以上的有:"+count[4]);
        System.out.println("80~89分为B的有:"+count[3]);
        System.out.println("70~79分为C的有:"+count[2]);
        System.out.println("60~69分为D的有:"+count[1]);
        System.out.println("60分以下为E的有:"+count[0]);
    }

2、从键盘输入8个整数存放在一个数组中,然后将奇数和偶数分别存入到两个不同的数组中,
并按奇数、偶数交替的顺序输出这两个数组中的所有数据
(先交替输出,如果奇数个数多,则再输出剩下的奇数,如果偶数个数多,则再输出剩下的偶数)。
(提示与要求:
(1)定义一个数组存储从键盘输入的8个整数,先判断这8个整数中奇数和偶数的个数,才能定义存储奇数和偶数的数组的长度;
(2)把一个大的数组分别存放在奇数和偶数数组中并交替输出的过程定义为方法)

public static void main(String[] args) {
        int[] a=new int[8];

        for (int i = 0; i < 8; i++) {
            System.out.println("请输入第"+(i+1)+"个整数");
            Scanner ar= new Scanner(System.in);
            a[i]=ar.nextInt();
        }
        chose01(a);
    }
    public static void chose01(int a[]){
        int x=0,y=0;
        for (int i = 0; i < a.length; i++) {
            if (a[i]%2==0){
                x++;
            } else {
                y++;
            }
        }
        int[] o=new int[x];
        int[] ji=new int[y];
        int r1=-1;
        int r2=-1;
        for (int i = 0; i < a.length; i++) {
            if (a[i]%2==0){
                r1++;
                o[r1]=a[i];
            } else {
                r2++;
                ji[r2]=a[i];
            }
        }
        int[] b=new int[a.length];

        System.out.println("输入的八个数为:");
        for (int t1:a){
            System.out.print(t1+" ");
        }
        System.out.println();
        System.out.println("其中奇数为:");
        for (int t2:ji){
            System.out.print(t2+" ");
        }
        System.out.println();
        System.out.println("其中偶数为:");
        for (int t3:o){
            System.out.print(t3+" ");
        }
        System.out.println();
        System.out.println("奇偶交叉输出为:");
        if (ji.length>o.length){
            for (int i = 0; i < o.length; i++) {
                System.out.print(ji[i]+" "+o[i]+" ");
            }
            for (int i = o.length; i <ji.length ; i++) {
                System.out.print(ji[i]+" ");
            }
            System.out.println();
        }else {
            for (int i = 0; i < ji.length; i++) {
                System.out.print(ji[i]+" "+o[i]+" ");
            }
            for (int i = ji.length; i <o.length ; i++) {
                System.out.print(o[i]+" ");
            }
        }
    }

3、定义一个数组,数组成员10个,找出数组中最大数连同下标一起输出

public static void main(String[] args) {
        int[] a={5,3,1,6,7,2};
        int max=a[0];
        int x=0;
        for (int i = 1; i < a.length; i++) {
            if (max<a[i]){
                max=a[i];
                x=i;
            }
        }
        System.out.println("数组的最大值为"+"a["+x+"]="+max);
    }

4、给定一个整型数组,数组成员10个,求该数组中第二大的数的下标

public static void main(String[] args) {
        int[] a={5,3,1,6,7,2};
        int max1=a[0];
        int max2=a[0];
        int x=0;
        int y=0;
        for (int i = 1; i < a.length; i++) {
            if (max1<a[i]){
                max1=a[i];
                x=i;
            }
        }
        for (int i = 1; i < a.length; i++) {
            if (max2<a[i]&&a[i]!=max1){
                max2=a[i];
                y=i;
            }
        }
//        System.out.println("数组的最大值为"+"a["+x+"]="+max1);
        System.out.println("数组的第二大值为"+"a["+y+"]="+max2);
    }

5、B哥去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?

public static void main(String[] args) {
        int[] a={5,3,8,6,7,2,9,6,7,8};
        int max=a[0];
        int min=a[0];
        int sum=0;
        double avg;
        for (int i = 1; i < a.length; i++) {
            if (max<a[i]){
                max=a[i];
            }else if (min>a[i]){
                min=a[i];
            }
            sum+=a[i];
        }
        avg=(double) (sum+a[0]-max-min)/(a.length-2);
        System.out.println("数组的最大值为"+max);
        System.out.println("数组的最小值为"+min);
        System.out.println("去掉一个最高分一个最低分后的平均分为:"+avg);
    }

6、定义数组,存放5个学生的成绩【成绩值自己设定】,将成绩从大到小排序,获得成绩之和,平均成绩,最小成绩,最大成绩。

public static void main(String[] args) {
        int[] a=new int[5];
        int sum=a[4];
        double avg=0;
        for (int i = 0; i < 5; i++) {
            Scanner sr=new Scanner(System.in);
            a[i]=sr.nextInt();
        }
        //需要遍历a.length-1遍
        for (int i = 0; i < a.length-1; i++) {
            //每遍需要比较a.length-1-i次
            for (int j =i+1; j < a.length; j++) {
                    if (a[i]<a[j]){
                        int temp=a[i];
                        a[i]=a[j];
                        a[j]=temp;
                    }
            }
        }
        System.out.print("五位同学的成绩从小到大排序为:");
        for (int i = 0; i <a.length; i++) {
            sum+=a[i];
            System.out.print(a[i]+" ");
        }
        avg=(double)sum/a.length;
        System.out.println();
        System.out.println("五位同学的成绩之和为:"+sum);
        System.out.println("五位同学的平均成绩为:"+avg);
        System.out.println("五位同学的最大成绩为:"+a[0]);
        System.out.println("五位同学的最小成绩为:"+a[4]);
    }

7、提取一个方法,将指定数组中的数组元素进行反转
例如:{10,23,2,45,6}—>{6,45,2,23,10}

public static void main(String[] args) {
        int[] a = {10, 23, 2, 45, 6,9};
        System.out.println("原数组为:");
        for (int x:a){
            System.out.print(x+" ");
        }
        for (int i = 0; i < a.length / 2; i++) {
            int temp = a[i];
            a[i] = a[a.length - i - 1];
            a[a.length - i - 1] = temp;
        }
        System.out.println();
        System.out.println("反转后数组为:");
        for (int x:a){
            System.out.print(x+" ");
        }
    }

8、现在有如下的一个数组:
int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:
int[] newArr = {1,3,4,5,6,6,5,4,7,6,7,5} ;

public static void main(String[] args) {
        int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
        int[] newArr = new int[12];
        int n=-1;
        System.out.println("原数组为:");
        for (int x:oldArr){
            System.out.print(x+" ");
        }
        for (int i = 0; i < oldArr.length; i++) {
            if (oldArr[i]!=0){
                n++;
                newArr[n]=oldArr[i];
            }
        }
        System.out.println();
        System.out.println("去掉0后的新数组为:");
        for (int x:newArr){
            System.out.print(x+" ");
        }
    }

9、现在给出两个数组:
数组a:“1,7,9,11,13,15,17,19”
数组b:“2,4,6,8,10”
两个数组合并为数组c。

public static void main(String[] args) {
        int[] a={1,7,9,11,13,15,17,19};
        int[] b={2,4,6,8,10};
        int[] c=new int[a.length+b.length];
        //方法一:
        System.arraycopy(a,0,c,0,a.length);
        System.arraycopy(b,0,c,a.length,b.length);
        System.out.println(Arrays.toString(c));
        //方法二:
        /*int n=-1;
        int m=-1;
        for (int i = 0; i <a.length+b.length ; i++) {
            n++;
            if (i<a.length){
                c[n]=a[i];
            }else {
                m++;
                c[n]=b[m];
            }
        }
        System.out.println("a数组为:");
        for (int x:a){
            System.out.print(x+" ");
        }
        System.out.println();
        System.out.println("b数组为:");
        for (int y:b){
            System.out.print(y+" ");
        }
        System.out.println();
        System.out.println("a和b数组合并之后为:");
        for (int z:c){
            System.out.print(z+" ");
        }*/
    }

10、找到在第一个数组array1中出现,而在第二个数组array2中没有出现的数字。

public static void main(String[] args) {
            int[] array1={1,2,3,4,13,5,6,7,8,9};
            int[] array2={9,8,1,2,3,4,6,7,9};
            System.out.println("在第一个数组array1中出现,而在第二个数组array2中没有出现的数字有:");
       outo: for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array2.length+1; j++) {
                if(j<array2.length){
                    if (array1[i]!=array2[j]){
                        continue;
                    }else {
                        break;
                    }
                }else {
                    System.out.print(array1[i]+" ");
//                    break outo;
                }
                }
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坏人曹怼怼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值