数组练习题

1.将数组{4,0,5,8,2,0,6,8,3}中的0去掉后返回一个新数组

public class Task {

 

   public static void main(String[] args) {

     

   //将数组{4,0,5,8,2,0,6,8,3}中的0去掉后返回一个新数组。

      int[] arr ={4,0,5,8,2,0,6,8,3};//定义一个原来的数组

      int[] arr1 ={};//定义一个新的数组

      //循环遍历,判断如果为不为0,则利用数组的赋值 Arrays.copyOf();方法进行数组的复制

      for(int i=0; i<arr.length; i++)

      {

         if(arr[i]!=0)

         {

            arr1=Arrays.copyOf(arr1, arr1.length+1);//数组复制

            arr1[arr1.length-1]=arr[i];

         }

      }

      //增强for循环

      for(int x : arr1)

      {

         System.out.println(x+"\t");

      }

      /*for(int j=0; j<arr1.length;j++)

      {

         System.out.println(arr1[j]+"\t");

      }*/

      System.out.println();

   }

 

}

2.现在给出两个数组,数组A“1791113151719

      数组B“246810”两个数组合并为数组C,按升序排列

public class Task2 {

 

   public static void main(String[] args) {

      // TODO Auto-generated method stub

 

      /*现在给出两个数组,数组A:“1,7,9,11,13,15,17,19;

      数组B:“2,4,6,8,10”两个数组合并为数组C,按升序排列*/

      //定义三个数组

      int[] a={1,7,9,1,13,15,17,19};

      int[] b={2,4,6,8,10};

      int[] c=new int[a.length+b.length];

     

   for(int i=0;i<a.length; i++)//代表轮数,选出几个最大的。数组长度-1

   {

      c[i]=a[i];//数组a存到c中

   }

   for(int i=0; i<b.length; i++)

   {

      c[i+a.length]=b[i];//数组b存到c中

   }

      for(int x: c )//增强for循环

      {

        

        

         //冒泡排序

         for(int i=0;i<c.length-1; i++)//代表轮数,选出几个最大的。数组长度-1

         {

            for(int j =0; j<c.length-i-1; j++ )//比较相邻的元素,大的往后,比较次数=长度-1-i

            {

              //比较

                if(c[j]>c[j+1])

                {

                   int temp =c[j];

                   c[j]=c[j+1];

                   c[j+1]=temp;

                }

            }

         }

         System.out.println(x);  

        

      }

   }

}

3.输出1 1 2 3 5 8 13……这样的Fibonacci数列,

//    输出该数列的前20个数字

 

public class Task3 {

 

   public static void main(String[] args) {

      // TODO Auto-generated method stub

//    输出1 1 2 3 5 8 13……这样的Fibonacci数列,

//    输出该数列的前20个数字

     

      int[] a=new int[20];//定义一个元素20的数组

      int i =0;

      //前两个数都是1,之后都是前两个数之和为下一个数

     

      for(i=0;i<20;i++)

      {

         //判断数组前俩元素都为1

         if(i==0 || i==1)

         {

            a[i]=1;

         }else//其他元素

         {

            a[i]=a[i-1]+a[i-2];

           

         }

         System.out.print(a[i]+",");

      }

     

   }

 

}

4.歌手打分:在歌唱比赛中,共有10位评委进行打分,

      在计算歌手得分时,去掉一个最高分,去掉一个最低分,

      然后剩余的8位评委的分数进行平均,就是该选手的最终得分。

      输入每个评委的评分,求某选手的得分。

public class Task4 {

 

   public static void main(String[] args) {

      // TODO Auto-generated method stub

      /*歌手打分:在歌唱比赛中,共有10位评委进行打分,

      在计算歌手得分时,去掉一个最高分,去掉一个最低分,

      然后剩余的8位评委的分数进行平均,就是该选手的最终得分。

      输入每个评委的评分,求某选手的得分。*/

     

      int[] arr=new int[10];//定义数组

      //变量

      int max=arr[0];

      int min=arr[0];

      int sum=0;

      int i;

      float avg;

      //创建Scanner对象

      Scanner scanner=new Scanner(System.in);

      System.out.println("输入十位评委的分数");

      for( i=0;i<10; i++)

      {

         arr[i]= scanner.nextInt();//输出10数

         sum+=arr[i];//和

        

         /*if(arr[i]>max)

         {

            max=arr[i];

           

         }

         if(arr[i]<=min)

         {

            min=arr[i];

         }*/

         //排序

         Arrays.sort(arr);

         //最大值

         max=arr[arr.length-1];

         //

         min=arr[0];

      }

      //平均分

      avg=(sum-min-max)/8.0f;

      /*System.out.println("歌手的最大值:"+max);

      System.out.println("歌手的最小值:"+min);*/

      System.out.println("歌手的平均值:"+avg);

   }

 

}

 

5.判断一个数组{1,2,3,1,0}中是否存在相同的元素,

//    如果存在相同的元素则输出重复,否则输出不重复

 

public class Task5 {

   /*假设数组中的元素不重复,两两比较数组中的元素,

   如果有一组元素相同,则数组中存储重复,结束循环。

   把比较的结果存储在一个标志变量里,最后判断标志变量的值即可。*/

   public static void main(String[] args) {

      // TODO Auto-generated method stub

//    判断一个数组{1,2,3,1,0}中是否存在相同的元素,

//    如果存在相同的元素则输出“重复”,否则输出“不重复”

      //定义一个数组

      int[] a={1,2,3,1,0}; //定义数组

      //定义变量

      int i;

      int j;

     

      for(i=0; i<a.length-1; i++)

      {

         for(j=i+1; j<a.length; j++)

         {

            //如果有一组元素相同,则数组中存储重复,结束循环。

            if(a[i]==a[j])

            {

           

                System.out.println("重复");

            }else

            {

                System.out.println("不重复");

            }

         }

      }

   }

 

}

6.将十进制整数35转换为二进制数。(选作)

 

public class Task6 {

   /*将除二取余得到的第一个数字存储在数组中第一个元素,

   第二次得到的余数存储在数组中第二个元素,依次类推,

   最后反向输出获得的数字即可。*/

   public static void main(String[] args) {

      // TODO Auto-generated method stub

//    将十进制整数35转换为二进制数。(选作)

     

      int x=35;//把35赋值给x

      int a[]=new int[32];//定义一个数组  /  二进制是32位

      for(int i=0;i<32;i++)

      {

      a[i]=x%2;//存储元素 

      x/=2;

      }

      for(int i=a.length-1;i>=0;i--)//每存储一个数 减1

      System.out.print(a[i]);

   }

 

}

 

posted @ 2017-02-28 20:16  plq  阅读(917)  评论(0编辑  收藏  举报