数组参考答案.docx
《数组参考答案.docx》由会员分享,可在线阅读,更多相关《数组参考答案.docx(15页珍藏版)》请在冰豆网上搜索。
数组参考答案
一、【必做题】
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;i<5;i++)
{
System.out.println(buffer[i]);
}
}
}
2.输出一个double型二维数组(长度分别为5、4,值自己设定)的值。
/*例5-3
*多维数组范例
*/
publicclassArrayTwoDimension
{
publicstaticvoidmain(String[]args)
{
double[][]buffer=newdouble[5][4];
for(inti=0;i{
for(intj=0;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-generatedmethodstub
int[]point={1,6,2,3,9,4,5,7,8};
java.util.Arrays.sort(point);
for(inti=0;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;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;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;iSystem.out.print("输入第"+(i+1)+"个数据");
a[i]=keyboard.nextInt();
}
//以上是输入整个数组
max=0;
min=0;
//设置两个标志,开始都指向第一个数
for(i=1;iif(a[i]>a[max])
max=i;//遍历数组,如果大于a[max],就把他的数组下标赋给max
if(a[i]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;iSystem.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;jSystem.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;ifor(intj=i+1;jif(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;ifor(intj=len-1;j>i;j--){
//如果data[j]小于data[j-1],交换
if(data[j]temp=data[j];
data[j]=data[j-1];
data[j-1]=temp;
}
}
}
}
//数组打印
publicstaticvoidprint(int[]data){
for(inti=0;iSystem.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;iif(a[i]min=a[i];
}elseif(a[i]>max){
max=a[i];
}
add=add+a[i];
}
System.out.pr