您好,欢迎访问三七文档
一、【必做题】1.编写一个简单程序,要求数组长度为5,分别赋值10,20,30,40,50,在控制台输出该数组的值。/*例5-1*数组使用范例*/publicclassArrayDemo{publicstaticvoidmain(String[]args){int[]buffer=newint[5];buffer[0]=10;buffer[1]=20;buffer[2]=30;buffer[3]=40;buffer[4]=50;for(inti=0;i5;i++){System.out.println(buffer[i]);}}}2.输出一个double型二维数组(长度分别为5、4,值自己设定)的值。/*例5-3*多维数组范例*/publicclassArrayTwoDimension{publicstaticvoidmain(String[]args){double[][]buffer=newdouble[5][4];for(inti=0;ibuffer.length;i++){for(intj=0;jbuffer[0].length;j++){System.out.print(buffer[i][j]);}System.out.println();}}}3.将一个字符数组的值(neusofteducation)考贝到另一个字符数组中。publicclassArrayCopyDemo{publicstaticvoidmain(String[]args){//定义源字符数组char[]copyFrom={'n','e','u','s','o','f','t','e','d','u','c','a','t','i','o','n'};char[]copyTo=newchar[7];System.arraycopy(copyFrom,2,copyTo,0,7);System.out.println(newString(copyTo));}}4.给定一个有9个整数(1,6,2,3,9,4,5,7,8})的数组,先排序,然后输出排序后的数组的值。publicclassArraySortDemo{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubint[]point={1,6,2,3,9,4,5,7,8};java.util.Arrays.sort(point);for(inti=0;ipoint.length;i++){System.out.println(point[i]);}}}5.在一个有8个整数(18,25,7,36,13,2,89,63)的数组中找出其中最大的数及其下标。publicclassArraymax{/***@paramargs*/publicstaticvoidmain(String[]args){int[]a={18,25,7,36,13,2,89,63};intmax=a[0];intmaxIndex=0;for(inti=1;ia.length;i++){if(max=a[i]){max=a[i];maxIndex=i;}}System.out.println(最大值为:+max+最大值下标为:+maxIndex);}}6、有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。importjava.util.Scanner;publicclassArrayinsert{/***@paramargs*/publicstaticvoidmain(String[]args){//定义inta[]={1,2,4,8,16,32,64,128,256,512,0};Scanners=newScanner(System.in);a[11]=s.nextInt();java.util.Arrays.sort(a);for(inti=0;ia.length;i++){System.out.println(a[i]);}}}7.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。packagecom.neusoft.javaTest;importjava.util.*;publicclassAnswer{publicstaticvoidmain(String[]args){inti,min,max,n,temp1,temp2;inta[];System.out.println(输入数组的长度:);Scannerkeyboard=newScanner(System.in);n=keyboard.nextInt();a=newint[n];for(i=0;in;i++){System.out.print(输入第+(i+1)+个数据);a[i]=keyboard.nextInt();}//以上是输入整个数组max=0;min=0;//设置两个标志,开始都指向第一个数for(i=1;in;i++){if(a[i]a[max])max=i;//遍历数组,如果大于a[max],就把他的数组下标赋给maxif(a[i]a[min])min=i;//同上,如果小于a[min],就把他的数组下标赋给min}//以上for循环找到最大值和最小值,max是最大值的下标,min是最小值的下标temp1=a[0];temp2=a[min];//这两个temp只是为了在交换时使用a[0]=a[max];a[max]=temp1;//首先交换a[0]和最大值a[max]if(min!=0){//如果最小值不是a[0],执行下面a[min]=a[n-1];a[n-1]=temp2;//交换a[min]和a[n-1]}else{//如果最小值是a[0],执行下面a[max]=a[n-1];a[n-1]=temp1;}for(i=0;in;i++){//输出数组System.out.print(a[i]+);}}}8.将一个数组中的元素逆序存放publicclassAnswer{publicstaticvoidmain(String[]args){Scanners=newScanner(System.in);inta[]=newint[20];System.out.println(请输入多个正整数(输入-1表示结束):);inti=0,j;do{a[i]=s.nextInt();i++;}while(a[i-1]!=-1);System.out.println(你输入的数组为:);for(j=0;ji-1;j++){System.out.print(a[j]+);}System.out.println(\n数组逆序输出为:);for(j=i-2;j=0;j=j-1){System.out.print(a[j]+);}}}9.将一个数组中的重复元素保留一个其他的清零。publicclassAnswer{publicstaticvoidmain(String[]args){int[]a={1,2,2,3,4,5,6,4,7,2,10};for(inti=0;ia.length-1;i++){for(intj=i+1;ja.length;j++){if(a[i]==a[j]){a[j]=0;}}}}}10、写一个方法,功能:定义一个一维的int数组,长度为3,把任意三个整数a,b,c赋值给数组,然后将它们按从小到大的顺序输出(使用冒泡排序)publicstaticvoidsort(int[]data){//数组长度intlen=data.length;inttemp=data[0];//临时变量for(inti=0;ilen-1;i++){for(intj=len-1;ji;j--){//如果data[j]小于data[j-1],交换if(data[j]data[j-1]){temp=data[j];data[j]=data[j-1];data[j-1]=temp;}}}}//数组打印publicstaticvoidprint(int[]data){for(inti=0;idata.length;i++){System.out.print(data[i]+);}System.out.print(\n);}11、给定一维数组{-10,2,3,246,-100,0,5},计算出数组中的平均值、最大值、最小值。inta[]=newint[]{-10,23,246,-100,0,5};intmax=a[0];intmin=a[0];intadd=a[0];for(inti=1;ia.length;i++){if(a[i]min){min=a[i];}elseif(a[i]max){max=a[i];}add=add+a[i];}System.out.println(最小值:+min);System.out.println(最大值:+max);System.out.println(平均值:+add/a.length);二、【选做题】1.利用随机数生成一个整数数组,数组共有10个元素,每个元素的值都在0-9之间,打印该数组并求平均数,多运行几次,看每次运行的结果是否相同。publicclassRandomArr{publicstaticvoidmain(String[]args){int[]arr=newint[10];//声明一个10个元素的int型数组for(inti=0;iarr.length;i++){arr[i]=(int)(Math.random()*10);//随机的数乘以10,再强制转换成整形System.out.print(arr[i]+);//打印数组}}}注:利用Math.random()方法可以生成一个随机小数(0x1)2.用一个二维数组构造并打印一个有n行的杨辉三角形,n由命令行输入,如一个有6行杨辉三角形如下:1111211331146411510101packagecom.neusoft.javaTest;importjava.util.Scanner;publicclassAnswer{publicvoidfun(intnum){int[][]m=newint[num][];for(inti=0;im.length;i++){m[i]=newint[i+1];m[i][0]=1;m[i][i]=1;for(intj=0;jm[i].length-1;j++){if(j=1&&i1)m[i][j]=m[i-1][j-1]+m[i-1][j];}}for(inti=0;im.length;i++){for(intj=0;jm[i].length;j++){System.out.print(m[i][j]);System.out.print('\t');}System.out.println();}}publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);intnum=scan.nextInt();newAnswer().fun(num);}}3、二维数组的排序,每一个一维数组单独排序int[][]a={{23,1,34},{77,89,12,35},{23,20}};for(intk=0;ka.length;k++){for(inti=0;ia[k].length-1;i++){for(intj=0;ja[k].length-1-i;j++){if(a[k][j]a[k][j+1]){inttemp=a[k][j];a[k][j]=a[k][j+1];a[k][j+1]=temp;}}}}4.求一个3*3矩阵对角线元素之和publicclassAnswer{publicstaticvoidmain(String[]args){int[][
本文标题:数组_参考答案
链接地址:https://www.777doc.com/doc-2430971 .html