Java数组练习题(带答案)(9页).doc
-Java数组练习题(带答案)-第 9 页一 填空题1) 数组的元素通过 下标 来访问,数组Array的长度为 。2) 数组复制时,"="将一个数组的 引用 传递给另一个数组。3) JVM将数组存储在 栈 (堆或栈)中。4) 数组的二分查找法运用的前提条件是数组已经 排序 。5) Java中数组的下标的数据类型是 整型 。6) 数组最小的下标是 0 。7) arraycopy()的最后一个参数指明 复制元素的个数 。8) 向方法传递数组参数时,传递的是数组的 引用 。9) 数组初始化包括 数组的申明,创建和初始化 。10) 数组下标访问超出索引范围时抛出 数组越界 异常11) 浮点型数组的默认值是 。12) 数组创建后其大小 不能 改变。二 选择题1. 下面错误的初始化语句是_ABD_A. char str="hello"B. char str100="hello"C. char str='h','e','l','l','o'D. char str='hello'2. 定义了一维int型数组a10后,下面错误的引用是_B_A. a0=1;B. a10=2;C. a0=5*2;D. a1=a2*a0;3. 下面的二维数组初始化语句中,正确的是_A. float b22=0.1,0.2,0.3,0.4;B. int a=1,2,3,4;C. int a2= 1,2,3,4;D. float a22=0;4. 引用数组元素时,数组下标可以是_D_A. 整型常量 B. 整型变量 C. 整型表达式 D. 以上均可5. 定义了int型二维数组a67后,数组元素a34前的数组元素个数为_A. 24 B. 25 C. 18 D. 176. 下列初始化字符数组的语句中,正确的是_B_A. char str5="hello"B. char str='h','e','l','l','o','0'C. char str5="hi"D. char str100=""7. 数组在Java中储存在 C 中A. 栈 B. 队列 C. 堆 D. 链表8. 下面程序的运行结果是_main() int a=1,2,3,4,5,6;System.out.printf("%d", a11);A. 3 B. 4 C. 5 D. 69. 下面程序的运行结果是_C_main() int x=30;int numbers=new intx;x=60;(numbers.length);A. 60 B. 20 C. 30 D. 5010. 下面程序的运行结果是_BDF_main() char s1="ABCDEF".toCharArray();int i=0;while(s1i+!='0')S(s1i+);A. ABCDEF B. BDF C. ABCDE D. BCDE11. 下面 不是创建数组的正确语句C A.float f=new float66; B.float f=new float6; C.float f=new float6; D.float f=new float6;12. 下面不是数组复制方法的是(C) A. 用循环语句逐个复制数组 B. 用方法arraycopy C. 用"="进行复制 D. 用clone方法13. 数组a的第三个元素表示为D A. a(3) B. a3 C.a(2) D. a214. 当访问无效的数组下标时,会发生B A. 中止程序 B. 抛出异常 C. 系统崩溃 D. 直接跳过15. 使用arraycopy()方法将数组a复制到b正确的是A A. arraycopy(a,0,b,0,a.length) B. arraycopy(a,0,b,0,b.length) C. arraycopy(b,0,a,0,a.length) D. arraycopy(a,1,b,1,a.length)16. 关于数组默认值,错误的是 B A. char-'"u0000' B. Boolean-true C. float- D. int- 017. 关于数组作为方法的参数时,向方法传递的是 A A. 数组的引用 B. 数组的栈地址 C. 数组自身 D. 数组的元素18. 关于数组复制,下列说法错误的是AC A. "="可以实现数组复制 B. 运用循环语句进行数组复制必须两个数组长度相同 C. arraycopy()方法没有给目标数组分配内存空间 D. 数组复制是数组引用的传递19. 下列语句会造成数组new int10越界是D A. a0 += 9; B. a9=10;C. a9 D. for(int i=0;i<=10;i+) ai+;20. 在JDK环境下编译JAVA源程序使用的命令是(B ) A.java B.javac C.jvm D.tomcatD. 子类不能使用父类的构造方法21. main方法是java Application 程序执行的入口点。关于main方法放入方法以下合法的是( )A. public static void main(); B. public static void main(Stringargs) C. public static int main(String arg)D. public void main(String arg)22. 执行完代码"int x=new int25;"后以下( A )说明正确的A. x24为0 B. x24未定义 C. x25为0 D. x0为空23. 关于数组排序方法,错误的是 C A. 选择排序 B. 插入排序 C. 二分排序 D. 用arrays.sort( )排序24. 关于char类型的数组,说法正确的是 D A. 其数组的默认值是'A' B. 可以仅通过数组名来访问数组 C. 数组不能转换为字符串 D. 可以存储整型数值25. 对于数组a10,下列表示错误的是B A. a0 B. a(0) C. a9 D. a126. 下列数组声明,下列表示错误的是 A. int a B. int aC. int a D. inta三、是非题1.下标用于指出数组中某个元素位置的数字。( )2.把数组中元素按某种顺序排列的过程叫做查找。( )3.确定数组中是否含有某个关键字的过程叫做排序。( )4.一个数组可以存放许多不同类型的数值。( )5.数组的下标通常是float型。( )6.数组的某个元素被传递给一个方法并被该方法修改,当被调用方法执行完毕时,这个元素中含有修改过的数值。( )7.数组可以声明为任何数据类型。( )8.数组由具有一名字和相同类型的一组连续内存单元构成。( )9.在数组声明中可以用等号及一个逗号分隔的初始值表初始化数组元素,该数组大小只能由用户来决定。( )10.将一个数组传递给一个方法,必须加在数组名后加方括号。( )11.Java语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。( )12.下面这条语句正确吗?( ) double myList; myList = 1.9, 2.9, 3.5, 4.6;14. 数组中有length()这个方法,如array.length()表示数组array中元素的个数( )15.下面这条语句正确吗?( ) int t32 = 1,2,3,4,5,6;16.数组声明后其大小固定。( )17.设有整型数组的定义:int A.=new int8; ,则a.length的值为7。( )18. 数组一旦创建,其大小不能再改变。( )19.用任何方式创建数组时,都必须指定数组的长度。( )20.声明数组时,要指定数组长度,以便为数组分配内存。( )四、简答题1. 如何声明和创建一个一维数组? 2. 如何访问数组的元素?3.数组下标的类型是什么?最小的下标是什么?一维数组a的第三个元素如何表示?4.数组越界访问会发生什么错误?怎样避免该错误?5.给方法传递数组参数与传递基本数据类型变量的值有何不同?6.复制数组有哪些方法?8.声明数组变量会为数组分配内存空间吗?为什么?五、程序题1.有一个整数数组,其中存放着序列1,3,5,7,9,11,13,15,17,19。请将该序列倒序存放并输出。1) public class Test 2) public static void main(String args) 3) int a = 1,3,5,7,9,11,13,15,17,19;4) int t;5) System.out.println("数组的初始状态为:");6) for (int i=0; i < a.length; i+)7) System.out.print(" " + ai);8) System.out.println();9) for (int i=0; i < a.length/2; i+) 10) t = ai;11) ai = aa.length-i-1;12) aa.length-i-1=t;13) System.out.println("数组逆序存放后的状态为:");14) for (int i=0; i < a.length; i+)15) System.out.print(" " + ai);2.编写一个程序,提示用户输入学生数量 姓名和他们的成绩,并按照成绩的降序来打印学生的姓名。1) public class exercise16 2) public static void main(String args) 3) String numberString = 4) JOptionPane.showInputDialog("Enter the number of students");5) int numberOfStudents = Integer.parseInt(numberString);6) String names = new StringnumberOfStudents;7) double scores = new doublenumberOfStudents;8) for (int i = 0; i < scores.length; i+) 9) namesi = JOptionPane.showInputDialog("Enter a student name");10) scoresi = Double.parseDouble(11) JOptionPane.showInputDialog("Enter a student score");12) for (int i = scores.length - 1; i >= 1; i-) 13) double currentMax = scores0;14) int currentMaxIndex = 0;15) for (int j = 1; j <= i; j+) 16) if (currentMax < scoresj) 17) currentMax = scoresj;18) currentMaxIndex = j;19) if (currentMaxIndex != i) 20) scorescurrentMaxIndex = scoresi;21) scoresi = currentMax;22) String temp = namescurrentMaxIndex;23) namescurrentMaxIndex = namesi;24) namesi = temp; 25) for (int i = scores.length - 1; i >= 0; i-) 26) System.out.println(namesi + "t" + scoresi);3.编写一个程序,使它能够读入10个整数,并且存储其中互不相同的数,最后将这10个数输出。1) import javax.swing.JOptionPane;2) public class exercise5 3) private static int j = 0;4) public static void main(String args) 5) int arrayInt = new int10;6) int i = 0;7) do 8) String numberString = JOptionPane9) .showInputDialog("Enter a number: ");10) int number = Integer.parseInt(numberString);11) if (isNotHave(arrayInt, number) 12) arrayInti = number;13) i+;14) j+;15) else16) do 17) numberString = JOptionPane18) .showInputDialog("This number is exit,enter a another number: ");19) number = Integer.parseInt(numberString);20) while (!isNotHave(arrayInt, number);21) arrayInti = number;22) i+;23) j+;24) while (i < arrayInt.length);25) String output = ""26) for (int k : arrayInt) 27) output += k + " "28) JOptionPane.showMessageDialog(null, "The elements of arrayInt is "29) + output, "output arrayInt", JOptionPane.INFORMATION_MESSAGE);30) public static boolean isNotHave(int arrayInt, int n) 31) for (int i = 0; i < j; i+) 32) if (arrayInti = n)33) return false;34) return true;4.先对数组1,3,9,5,6,7,1,5,4,8进行排序,然后二分查找法找出数组中的元素8,标出其排序后其下标的位置。1) public class Test 2) public static void main(String args) 3) int numbers = 1,3,9,5,6,7,1,5,4,8;4) java.util.Arrays.sort(numbers);5) System.out.println("排序后的数组为:");6) for (int i=0; i<numbers.length; i+)7) System.out.print(" " + numbersi);8) System.out.println();9) int n = binarySearch(numbers, 8);10) System.out.println("数字8的位置为:" + n);11) public static int binarySearch(int list, int key) 12) int low = 0;13) int high = list.length - 1;14) int mid = 0;15) while (high > low) mid = (mid = (low + high) / 2) ? 16) (mid + 1) : (low + high) / 2);17) if (key < listmid)18) high = mid - 1;19) else if (key = listmid)20) return mid;21) else22) low = mid - 1;23) return -low - 1;5.编写一个程序,读入数目确定的考试分数,并且判断有多少个分数高于或等于平均分,有多少个分数低于平均分。输入一个负数标志输入结束,假设最高分为100。1) import javax.swing.JOptionPane;2) public class Test 3) public static void main(String args) 4) double scores = new double100;5) double sum = 0;6) int count = 0;7) do 8) String scoreString =9) JOptionPane.showInputDialog(null, "Enter a new score");10) scorescount = Double.parseDouble(scoreString);11) sum += scorescount;12) while (scorescount+ >= 0);13) double average = (sum - scorescount) / (count - 1);14) int numOfAbove = 0;15) int numOfBelow = 0;16) for (int i = 0; i < count - 1; i+)17) if (scoresi >= average)18) numOfAbove+;19) else20) numOfBelow+;21) System.out.println("Average is " + average);22) System.out.println("Number of scores above or equal to the average "23) + numOfAbove);24) System.out.println("Number of scores below the average "25) + numOfBelow);26) System.exit(0);6.编写一个程序,生成0-9之间的100个随机整数并且显示每一个数的个数。1) public class exercise7 2) public static void main(String args) 3) int numbers = new int100;4) int counts = new int10;5) int k;6) for (int i = 0; i < 100; i+)7) numbersi = (int)(Math.random() * 10);8) countsnumbersi+;9) System.out.println("the 100 numbers is :");10) for(int i = 1; i <= numbers.length; i+)11) if (i % 10 != 0)12) System.out.print(numbersi-1 + " ");13) else14) System.out.println(numbersi-1);15) System.out.println("the counts of each number is :");16) for(int i = 1; i <= counts.length; i+)17) System.out.print(countsi-1 + " ");7. 求平均值和方差。利用 mean(int numbers)求平均值,利用 deviation(int numbers)求标准差。1) import java.util.Scanner;2) public class MeanDeviation 3) public static void main(String args) 4) Scanner in = new Scanner(System.in);5) System.out.print("输入数组的长度:");6) int n = in.nextInt();7) System.out.print("输入数组元素:");8) int array = new intn;9) for (int i = 0; i < array.length; i+)10) arrayi = in.nextInt();11) System.out.print("The mean is: " + mean(array) + "n"12) + "The deviation is: " + deviation(array);13) public static double mean(int numbers)14) double sum = 0.0;15) for(int i = 0; i < numbers.length; i+)16) sum += numbersi;17) return sum / numbers.length;18) public static double deviation(int numbers)19) double powSum = 0.0;20) for(int i = 0; i < numbers.length; i+)21) powSum += Math.pow(numbersi - mean(numbers),2);22) return Math.sqrt(powSum / (numbers.length - 1);8.编写一个程序,求出整数数组中最小元素的下标。如果这样的元素个数大于1,则返回下标最小的数的下标。1) public class MinIndex 2) public static void main(String args) 3) int list = 1, 2, 4, 5, 10, 100, 2, -22;4) System.out.println("The min is " + minIndex(list);5) public static int minIndex(int list) 6) int min = list0;7) int minIndex = 0;8) for (int i = 1; i < list.length; i+)9) if (min > listi) 10) min = listi;11) minIndex = i;12) return minIndex;