java 数组练习题3

时间:2023-02-23 12:18:15

/*
1.歌手打分:
在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均,就是该选手的最终得分。输入每个评委的评分,求某选手的得分。

2.现在有如下一个数组:
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};

3.定义一个整型数组,保存10个数据,利用程序完成将最大值保存在数组中第一个元素,依次递减。

  1. 要求输入一组英文字符串数组,让这个字符串数组中前面一个元素的最后一个字母和下一个元素的首位上的字母相等,并且每个元素的长度大于等于2且小于等于100.

5.快速找出一个数组中的最大数、第二大数。

6.给定含有n个元素的整型数组a,其中包括0元素和非0元素,对数组进行排序,要求:
1、排序后所有0元素在前,所有非零元素在后,且非零元素排序前后相对位置不变
2、不能使用额外存储空间
* */
public class Shuzulianxi2 {
public static void main(String[] args) {
//show();
//show1();
//show2();
//show4();
show5();
}
/*
* 1.歌手打分:
在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,
然后剩余的8位评委的分数进行平均,就是该选手的最终得分。输入每个评委的评分,求某选手的得分。

 * */
public static void show(){
Scanner input=new Scanner(System.in);
System.out.println("请输入你的打分");
double[] arr=new double[10];
for (int i = 0; i < arr.length; i++) {
arr[i]=input.nextInt();

}
Arrays.sort(arr);//排序
System.out.println(Arrays.toString(arr));
int num=0;
for (int j = 1; j < arr.length-1; j++) {
num +=arr[j];
}
System.out.println(Arrays.toString(arr));
//最终的得分
System.out.println("最终的得分"+(num/8));
}
/*
2.现在有如下一个数组:
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 show1(){
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int[] newArr1=new int[oldArr.length];
System.arraycopy(oldArr,0,newArr1,0,oldArr.length);
for (int i = 0; i < newArr1.length; i++) {//将等于0的元素后移到最后
for (int j = 0; j < newArr1.length-1; j++) {
if(newArr1[j]==0){
int temp=newArr1[j];//第三方变量交换
newArr1[j]=newArr1[j+1];
newArr1[j+1]=temp;
}
}
}
int num=0;//查看newArr中不为零的元素的个数
for (int k = 0; k < newArr1.length; k++) {
if (newArr1[k]>0) {
num++;
}
}
int[] newArr=new int[num];//创建newArr数组
System.arraycopy(newArr1, 0, newArr, 0, newArr.length);//考培
System.out.println(Arrays.toString(newArr1));
System.out.println(Arrays.toString(newArr));
}
/*
*
* 3.定义一个整型数组,保存10个数据,利用程序完成将最大值保存在数组中第一个元素,依次递减。
* */
public static void show2(){
Scanner input =new Scanner(System.in);
System.out.println("请输入10个整数");
int [] arr=new int[10];
for (int i = 0; i < arr.length; i++) {
arr[i]=input.nextInt();
//将整数存入数组
}

for (int i = 0; i < arr.length-1; i++) {
for (int j = i; j < arr.length-1-i; j++) {
if(arr[j]<arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(arr));

}

/*
4. 要求输入一组英文字符串数组,
让这个字符串数组中前面一个元素的最后一个字母和下一个元素的首位上的字母相等,
并且每个元素的长度大于等于2且小于等于100.
*/
public static void show3(){
Scanner input=new Scanner(System.in);
String[] arr=new String[1];
}
/*
* 5.快速找出一个数组中的最大数、第二大数。
* */
public static void show4(){
Scanner input =new Scanner(System.in);
System.out.println("请输入10个整数");
int [] arr=new int[10];
for (int i = 0; i < arr.length; i++) {
arr[i]=input.nextInt();
//将整数存入数组
}
System.out.println(Arrays.toString(arr));
Arrays.sort(arr);
System.out.println("最大数是"+arr[arr.length-1]);
System.out.println("第二大数是"+arr[arr.length-2]);
}
/*
*

6.给定含有n个元素的整型数组arr,其中包括0元素和非0元素,对数组进行排序,要求:
1、排序后所有0元素在前,所有非零元素在后,且非零元素排序前后相对位置不变
2、不能使用额外存储空间
* */
public static void show5(){
Scanner input = new Scanner(System.in);
System.out.println(“请问你要输入几个数”);
int n=input.nextInt();
int[] arr=new int[n];//让控制台确定数组的长度
System.out.println(“请输入”+n+”个整数”);
for (int i = 0; i < arr.length; i++) {
arr[i]=input.nextInt();
}
System.out.println(Arrays.toString(arr));//打印数组
for (int i = 0; i < arr.length; i++) {
for (int j = i+1; j < arr.length-i; j++) {
if(arr[j]==0){
int temp =arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
}
}
}
System.out.println(Arrays.toString(arr));

    }