Java数组练习题.docx
《Java数组练习题.docx》由会员分享,可在线阅读,更多相关《Java数组练习题.docx(16页珍藏版)》请在冰豆网上搜索。
Java数组练习题
一填空题
1)数组的元素通过下标来访问,数组Array的长度为。
2)数组复制时,"="将一个数组的引用传递给另一个数组。
3)JVM将数组存储在栈(堆或栈)中。
4)数组的二分查找法运用的前提条件是数组已经排序。
5)Java中数组的下标的数据类型是整型。
6)数组最小的下标是0。
7)arraycopy()的最后一个参数指明复制元素的个数。
8)向方法传递数组参数时,传递的是数组的引用。
9)数组初始化包括数组的申明,创建和初始化。
10)数组下标访问超出索引范围时抛出数组越界异常
11)浮点型数组的默认值是。
12)数组创建后其大小不能改变。
二选择题
1.下面错误的初始化语句是_ABD__
A.charstr[]="hello";B.charstr[100]="hello";
C.charstr[]={'h','e','l','l','o'};D.charstr[]={'hello'};
2.定义了一维int型数组a[10]后,下面错误的引用是_B__
A.a[0]=1;B.a[10]=2;C.a[0]=5*2;D.a[1]=a[2]*a[0];
3.下面的二维数组初始化语句中,正确的是____
A.floatb[2][2]={,,,};B.inta[][]={{1,2},{3,4}};
C.inta[2][]={{1,2},{3,4}};D.floata[2][2]={0};
4.引用数组元素时,数组下标可以是_D___
A.整型常量B.整型变量C.整型表达式D.以上均可
5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____
A.24B.25C.18D.17
6.下列初始化字符数组的语句中,正确的是__B__
A.charstr[5]="hello";B.charstr[]={'h','e','l','l','o','\0'};
C.charstr[5]={"hi"};D.charstr[100]="";
7.数组在Java中储存在C中
A.栈B.队列C.堆D.链表
8.下面程序的运行结果是____
main(){
inta[][]={{1,2,3},{4,5,6}};
"%d",a[1][1]);
}
A.3B.4C.5D.6
9.下面程序的运行结果是_C___
main(){
intx=30;
int[]numbers=newint[x];
x=60;
}
A.60B.20C.30D.50
10.下面程序的运行结果是__BDF__
main(){
chars1[]="ABCDEF".toCharArray();
inti=0;
while(s1[i++]!
='\0')
}
A.ABCDEFB.BDFC.ABCDED.BCDE
11.下面?
不是创建数组的正确语句C
?
f[][]=new?
float[6][6];?
?
?
?
?
f[]=new?
float[6];
?
f[][]=new?
float[][6];?
?
?
?
?
[][]f=new?
float[6][];
12.下面不是数组复制方法的是(C)
A.用循环语句逐个复制数组B.用方法arraycopy
C.用"="进行复制D.用clone方法
13.数组a的第三个元素表示为D
A.a(3)B.a[3]
(2)D.a[2]
14.当访问无效的数组下标时,会发生B
A.中止程序B.抛出异常C.系统崩溃D.直接跳过
15.使用arraycopy()方法将数组a复制到b正确的是A
A.arraycopy(a,0,b,0,B.arraycopy(a,0,b,0,
C..arraycopy(b,0,a,0,D.arraycopy(a,1,b,1,
16.关于数组默认值,错误的是B
A.char--'"u0000'B.Boolean--trueC.float--0.0fD.int--0
17.关于数组作为方法的参数时,向方法传递的是A
A.数组的引用B.数组的栈地址C.数组自身D.数组的元素
18.关于数组复制,下列说法错误的是AC
A."="可以实现数组复制
B.运用循环语句进行数组复制必须两个数组长度相同
C.arraycopy()方法没有给目标数组分配内存空间
D.数组复制是数组引用的传递
19.下列语句会造成数组newint[10]越界是D
A.a[0]+=9;B.a[9]=10;C.—a[9]D.for(inti=0;i<=10;i++)a[i]++;
20.在JDK环境下编译JAVA源程序使用的命令是(B)
D.子类不能使用父类的构造方法
21.main方法是java?
?
Application?
?
程序执行的入口点。
关于main方法放入方法以下合法的是()
A.?
?
public?
?
static?
?
void?
?
main();B.?
?
public?
?
static?
?
void?
?
main(String[]args)
C.?
?
public?
?
static?
?
int?
?
main(String[]?
?
arg)D.?
?
public?
?
void?
?
main(String?
?
arg[])
22.执行完代码"int[]x=new?
?
int[25];"后以下(A)说明正确的
A.x[24]为0?
?
B.x[24]未定义C.x[25]为0?
?
?
?
D.x[0]为空
23.关于数组排序方法,错误的是C
A.选择排序B.插入排序C.二分排序D.用()排序
24.关于char类型的数组,说法正确的是D
A.其数组的默认值是'A'B.可以仅通过数组名来访问数组
C.数组不能转换为字符串D.可以存储整型数值
25.对于数组a[10],下列表示错误的是B
A.a[0]B.a(0)C.a[9]D.a[1]
26.下列数组声明,下列表示错误的是
A.int[]aB.inta[]C.int[][]aD.int[]a[]
三、是非题
1.下标用于指出数组中某个元素位置的数字。
()
2.把数组中元素按某种顺序排列的过程叫做查找。
()
3.确定数组中是否含有某个关键字的过程叫做排序。
()
4.一个数组可以存放许多不同类型的数值。
()
5.数组的下标通常是float型。
()
6.数组的某个元素被传递给一个方法并被该方法修改,当被调用方法执行完毕时,这个元素中含有修改过的数值。
()
7.数组可以声明为任何数据类型。
()
8.数组由具有一名字和相同类型的一组连续内存单元构成。
()
9.在数组声明中可以用等号及一个逗号分隔的初始值表初始化数组元素,该数组大小只能由用户来决定。
()
10.将一个数组传递给一个方法,必须加在数组名后加方括号。
()
语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。
()
12.下面这条语句正确吗?
()
double[]myList;
myList={,,,};
14.数组中有length()这个方法,如()表示数组array中元素的个数()
15.下面这条语句正确吗?
()
intt[3][2]={{1,2},{3,4},{5,6}};
16.数组声明后其大小固定。
()
17.设有整型数组的定义:
intA.[]=newint[8];,则的值为7。
()
18.数组一旦创建,其大小不能再改变。
()
19.用任何方式创建数组时,都必须指定数组的长度。
()
20.声明数组时,要指定数组长度,以便为数组分配内存。
()
四、简答题
1.如何声明和创建一个一维数组?
2.如何访问数组的元素?
3.数组下标的类型是什么?
最小的下标是什么?
一维数组a的第三个元素如何表示?
4.数组越界访问会发生什么错误?
怎样避免该错误?
5.给方法传递数组参数与传递基本数据类型变量的值有何不同?
6.复制数组有哪些方法?
8.声明数组变量会为数组分配内存空间吗?
为什么?
五、程序题
1.有一个整数数组,其中存放着序列1,3,5,7,9,11,13,15,17,19。
请将该序列倒序存放并输出。
1)publicclassTest{
2)publicstaticvoidmain(String[]args){
3)inta[]={1,3,5,7,9,11,13,15,17,19};
4)intt;
5)"数组的初始状态为:
");
6)for(inti=0;i<;i++)
7)""+a[i]);
8)
9)for(inti=0;i<2;i++){
10)t=a[i];
11)a[i]=a[];
12)a[]=t;
13)}
14)
15)"数组逆序存放后的状态为:
");
16)for(inti=0;i<;i++)
17)""+a[i]);
18)}
19)}
2.编写一个程序,提示用户输入学生数量姓名和他们的成绩,并按照成绩的降序来打印学生的姓名。
1)publicclassexercise16{
2)publicstaticvoidmain(String[]args){
3)StringnumberString=
4)("Enterthenumberofstudents");
5)intnumberOfStudents=(numberString);
6)
7)String[]names=newString[numberOfStudents];
8)double[]scores=newdouble[numberOfStudents];
9)
10)for(inti=0;i<;i++){
11)names[i]=("Enterastudentname");
12)scores[i]=(
13)("Enterastudentscore"));
14)}
15)
16)for(inti=-1;i>=1;i--){
17)doublecurrentMax=scores[0];
18)intcurrentMaxIndex=0;
19)
20)for(intj=1;j<=i;j++){
21)if(currentMax22)currentMax=scores[j];
23)currentMaxIndex=j;
24)}
25)}
26)
27)if(currentMaxIndex!
=i){
28)scores[currentMaxIndex]=scores[i];
29)scores[i]=currentMax;
30)Stringtemp=names[currentMaxIndex];
31)names[currentMaxIndex]=names[i];
32)names[i]=temp;
33)}
34)}
35)
36)for(inti=-1;i>=0;i--){
37)+"\t"+scores[i]);
38)}
39)}
40)}
3.编写一个程序,使它能够读入10个整数,并且存储其中互不相同的数,最后将这10个数输出。
1)importclassexercise5{
2)privatestaticintj=0;
3)
4)publicstaticvoidmain(String[]args){
5)int[]arrayInt=newint[10];
6)inti=0;
7)
8)do{
9)StringnumberString=JOptionPane
10).showInputDialog("Enteranumber:
");
11)
12)intnumber=(numberString);
13)
14)if(isNotHave(arrayInt,number)){
15)arrayInt[i]=number;
16)i++;
17)j++;
18)}
19)else
20){
21)do{
22)numberString=JOptionPane
23).showInputDialog("Thisnumberisexit,enteraanothernumber:
");
24)number=(numberString);
25)}while(!
isNotHave(arrayInt,number));
26)
27)arrayInt[i]=number;
28)i++;
29)j++;
30)}
31)}while(i<;
32)
33)Stringoutput="";
34)for(intk:
arrayInt){
35)output+=k+"";
36)}
37)
38)(null,"TheelementsofarrayIntis"
39)+output,"outputarrayInt",;
40)}
41)
42)publicstaticbooleanisNotHave(int[]arrayInt,intn){
43)for(inti=0;i44)if(arrayInt[i]==n)
45)returnfalse;
46)}
47)returntrue;
48)}
49)}
4.先对数组{1,3,9,5,6,7,1,5,4,8}进行排序,然后二分查找法找出数组中的元素8,标出其排序后其下标的位置。
1)publicclassTest{
2)publicstaticvoidmain(String[]args){
3)intnumbers[]={1,3,9,5,6,7,1,5,4,8};
4)"排序后的数组为:
");
5)for(inti=0;i<;i++)
6)""+numbers[i]);
7)
8)intn=binarySearch(numbers,8);
9)"数字8的位置为:
"+n);
10)
11)}
12)
13)publicstaticintbinarySearch(int[]list,intkey){
14)intlow=0;
15)inthigh=-1;
16)intmid=0;
17)
18)while(high>low){mid=(mid==(low+high)/2)?
19)(mid+1):
((low+high)/2);
20)if(key21)high=mid-1;
22)elseif(key==list[mid])
23)returnmid;
24)else
25)low=mid-1;
26)}
27)return-low-1;
28)}
29)}
5.编写一个程序,读入数目确定的考试分数,并且判断有多少个分数高于或等于平均分,有多少个分数低于平均分。
输入一个负数标志输入结束,假设最高分为100。
1)importclassTest{
2)publicstaticvoidmain(String[]args){
3)double[]scores=newdouble[100];
4)doublesum=0;
5)intcount=0;
6)
7)do{
8)StringscoreString=
9)(null,"Enteranewscore");
10)scores[count]=(scoreString);
11)sum+=scores[count];
12)}while(scores[count++]>=0);
13)
14)doubleaverage=(sum-scores[count])/(count-1);
15)
16)intnumOfAbove=0;
17)intnumOfBelow=0;
18)for(inti=0;i19)if(scores[i]>=average)
20)numOfAbove++;
21)else
22)numOfBelow++;
23)
24)"Averageis"+average);
25)"Numberofscoresaboveorequaltotheaverage"
26)+numOfAbove);
27)"Numberofscoresbelowtheaverage"
28)+numOfBelow);
29)
30)(0);
31)}
32)}
6.编写一个程序,生成0-9之间的100个随机整数并且显示每一个数的个数。
1)publicclassexercise7{
2)publicstaticvoidmain(String[]args){
3)int[]numbers=newint[100];
4)int[]counts=newint[10];
5)
6)intk;
7)for(inti=0;i<100;i++)
8){
9)numbers[i]=(int)()*10);
10)counts[numbers[i]]++;
11)}
12)
13)"the100numbersis:
");
14)for(inti=1;i<=;i++)
15){
16)if(i%10!
=0)
17)+"");
18)else
19)
20)}
21)
22)"thecountsofeachnumberis:
");
23)for(inti=1;i<=;i++)
24)+"");
25)}
26)}
7.求平均值和方差。
利用mean(int[]numbers)求平均值,利用deviation(int[]numbers)求标准差。
1)importclassMeanDeviation{
2)publicstaticvoidmain(String[]args){
3)Scannerin=newScanner;
4)
5)"输入数组的长度:
");
6)intn=();
7)
8)"输入数组元素:
");
9)int[]array=newint[n];
10)for(inti=0;i<;i++)
11){
12)array[i]=();
13)}
14)
15)"Themeanis:
"+mean(array)+"\n"
16)+"Thedeviationis:
"+deviation(array));
17)}
18)
19)publicstaticdoublemean(int[]numbers)
20){
21)doublesum=;
22)for(inti=0;i<;i++)
23){
24)sum+=numbers[i];
25)}
26)returnsum/;
27)}
28)
29)publicstaticdoubledeviation(int[]numbers)
30){
31)doublepowSum=;
32)for(inti=0;i<;i++)
33){
34)powSum+=(numbers[i]-mean(numbers),2);
35)}
36)
37)return(powSum/-1));
38)}
39)}
8.编写一个程序,求出整数数组中最小元素的下标。
如果这样的元素个数大于1,则返回下标最小的数的下标。
1)publicclassMinIndex{
2)publicstaticvoidmain(String[]args){
3)int[]list={1,2,4,5,10,100,2,-22};
4)
5)"Theminis"+minIndex(list));
6)}
7)