Contents
- 1 (指定等级)
- 2 (倒置输入的数)
- 3 (计算数字的出现次數)
- 4 (分析成绩)
- 5 (打印不同的教)
- 6 (统计一位数的个數)
- 7 (求数组的平均值)
- 8 (找出最小元素)
- 9 (找出最小元素的下标)
- 10 (随机数选择器)
- 11 (计算gcd)
- 12 (消除重复)
- 13 (对学生排序)
- 14 ( 冒泡排序)
- 15 (是否排好序了?)
- 16 (游戏:八皇后)
- 17 (游戏:储物柜难題)
- 18 (仿真:优惠券收集人网題)
- 19 ( 完全相同的数组)
- 20 (相同的数组)
- 21 (数学方面:组合)
- 22 ( 游戏:选出四张牌)
- 23 (模式识别方面:四个连续相等的数)
- 24 (合并两个有序列表)
- 25 ( 对字符串中的字符排序)
- 26 ( 游戏:猜字游戏)
- 27 参考答案
(指定等级)
编写一个程序,读入学生成绩,获取最髙分best, 然后根据下面的规则陚等级值
• 如果分数>=best-10, 等级为A
• 如果分数>=best-20, 等级为B
• 如果分数>=best-30, 等级为C
• 如果分数>=卜68140, 等级为D
• 其他情况下,等级为F
程序提示用户输入学生总数,然后提示用户输入所有的分数,最后显示等级得出结论。下面
是一个运行示例:
Enter the number of students: 4 Enter 4 scores: 40 55 70 58 Student 0 score is 40 and grade is C Student 1 score is 55 and grade is B Student 2 score is 70 and grade is A Student 3 score is 58 and grade is B
(倒置输入的数)
编写程序,读取10 个整数,然后按照和读人顺序相反的顺序将它们显示出来。
(计算数字的出现次數)
编写程序,读取在1到100 之间的整数,然后计算每个数出现的次数。假定输入是以0 结束的。下面是这个程序的一个运行示例:
Enter the integers between 1 and 100: 2 5 6 5 4 3 23 43 2 0 2 occurs 2 times 3 occurs 1 time 4 occurs 1 time 5 occurs 2 times 6 occurs 1 time 23 occurs 1 time 43 occurs 1 time
(分析成绩)
编写一个程序,读人个数不确定的考试分数,并且判断有多少个分数是大于或等于平均分,多少个分数是低于平均分的。输人一个负数表示输入的结束。假设最高分为100。
(打印不同的教)
编写一个程序,读人10 个数并且显示互不相同的数(即一个数出现多次,但仅显示一次)。(提示,读人一个数,如果它是一个新数,则将它存储在数组中。如果该数已经在数组中,则忽略它。)输入之后,数组包含的都是不同的数。下面是这个程序的运行示例:
(统计一位数的个數)
编写一个程序,生成0 和9 之间的100 个随机整数,然后显示每一个数出现的次数。
〆提示:使用(int)(Math.random()*10)产生0 到9 之间的随机整數。使用一个名为counts 的由10 个整数构成的數组存放0,1,…,9 的个数
(求数组的平均值)
编写两个重载的方法,使用下面的方法头返回一个数组的平均数:
public static int average(int[] array) public static double average(double[3 array)
编写测试程序,提示用户输人10 个double 型值,调用这个方法,然后显示平均值
(找出最小元素)
编写一个方法,使用下面的方法头求出一个整数数组中的最小元素:
public static double min(double[] array)
编写测试程序,提示用户输人十个数字,调用这个方法返回最小值.显示其最小值。下面是该程序的运行示例
Enter ten numbers: 1.9 2.5 3.7 2 1.5 6 3 4 5 2 The minimum number is: 1.5
(找出最小元素的下标)
编写一个方法,求出整数数组中最小元素的下标。如果这样的元素个数大于1,则返回最小的下标。使用下面的方法头:
public static int indexOfSmal1estEIement(double[] array)
编写测试程序,提示用户输人10 个数宇,调用这个方法,返回最小元素的下标,然后显示这个下标值。
(随机数选择器)
编写一个方法,返回1到S4 之间的随机数,不包括传递到参数中的numbers。
如下指定这个方法头:
public static int getRandom(int. . . numbers)
(计算gcd)
编写一个方法,返回个数不确定的整数的最大公约数。指定这个方法头如下所示:
public static int gcd(int… numbers)
编写测试程序,提示用户输人 5 个数字,调用该方法找出这些数的最大公约数,并显示这个最大公约数。
(消除重复)
使用下面的方法头编写方法,消除数组中重复出现的值:
public static int[] eliminateDuplicates(int[] list)
编写一个测试程序,读取10 个整数,调用该方法,然后显示结果。下面是程序的运行示例:
Enter ten numbers: 1 2 3 2 1 6 3 4 5 2 The distinct numbers are: 1 2 3 6 4 5
(对学生排序)
编写一个程序,提示用户输入学生个数、学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名
( 冒泡排序)
使用冒泡排序算法编写一个排序方法。冒泡排序算法遍历数组几次。在每次遍历中,对相邻的两个元素进行比较。如果这一对元素是降序,则交换它们的值;否则,保持值不变。由于较小的值像气泡一样逐渐“ 浮向” 顶部,同时较大的值“沉向” 底部,所以,这种技术称为冒泡排序法( bubble sort) 或下沉排序法( sinking sort)。编写一个测试程序,读取10 个double 型的值,调用这个方法,然后显示排好序的数字。
(是否排好序了?)
编写以下方法,如果参数中的list 数组已经按照升序排好了,则返回true。
public static boolean isSorted(int[] list)
编写一个测试程序,提示用户输人一个列表,显示该列表是否已经排好序。下面是一个运行示例。注意,输人中的第一个数表示列表中的元素个数。该数不是列表的一部分。
Enter list: 8 10 1 5 16 61 9 11 1 The list is not sorted Enter list: 10 1 1 3 4 4 5 7 9 11 21 The list is already sorted
(游戏:八皇后)
经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能互相攻击(即没有两个皇后是在同一行、同一列或者同一对角上)。可能的解决方案有很多。编写程序显示一个这样的解决方案。一个示例输出如图所示。

(游戏:储物柜难題)
一个学校有 100 个储物柜和 100 个学生。所有的储物柜在上学第一天都是关着的。随着学生进来,第一个学生(用S1表示)打开每个柜子。然后,第二个学生(用S2 表示)从第二个柜子(用L2 表示)开始.关闭相隔为 1 的柜子。学生S3 从第三个柜子开始,然后改变每个第三个柜子(如果它是开的就关上,如果它是关的就打开)。学生S4 从柜子L4 开始,然后改变每个第四个柜子的开闭状态。学生S5 从 L5 开始,然后改变每个第五个柜子的状态,依此类推,直到学生 S100 改变 L100 为止。
在所有学生都经过教学楼并且改变了柜子之后,哪些柜子是开的?编写程序找出答案。
(仿真:优惠券收集人网題)
优惠券收集人问题是一个经典的统计问题,它有很多实际应用。这个问题重复地从一套对象中?出一个对象,然后找出要将所有需要拿出的对象都至少拿出来一次,需要拿多少次。从该问题衍生出的类似问题就是,从一副打乱的 52 张牌中重复选牌,找出在看到每种花色都有一张出现前,需要选多少次。假设在选下一张牌之前的那张牌是背面向上的。编写程序,模拟要得到四张不同花色的牌所需要的选取次数,然后显示选中的四张牌(有可能一张牌被选了两次)。下面是这个程序的运行示例:
Queen of Spades 5 of Clubs Queen of Hearts 4 of Diamonds Number of picks: 12
( 完全相同的数组)
如果两个数组listl 和list2 的长度相同,而且对于每个i, list1[i] 都等于 list2[i] , 那么认为listl 和list2 是完全相同的。使用下面的方法头编写一个方法,如果listl 和list2 完全相同,那么这个方法返回true:
public static boolean equals(int[] listl, int[] 1ist2)
编写一个测试程序,提示用户输人两个整数列表,然后显示这两个列表是否完全相同。下面是运行示例。注意,输人的第一个数字表明列表中元素的个数。该数字不是列表的一部分。
(相同的数组)
如果两个数组listl 和list2 的内容相同,那么就说它们是相同的。使用下面的方法头编写一个方法,如果 list1 和 list2 是相同的,该方法就返回true:
public static boolean equals(int[] listl, int[] list2)
编写一个测试程序,提示用户输人两个整数列表,然后显示它们两个是否相同。下面是运行示例。注意,输入的第一个数字表示列表中元素的个数。该数字不是列表的一部分。
Enter list1: 5 2 5 6 6 1 Enter list2: 5 5 2 6 1 6 Two lists are identical Enter list1: 5 5 5 6 6 1 Enter list2: 5 2 5 6 1 6 Two lists are not identical
(数学方面:组合)
编写一个程序,提示用户输人10 个整数,然后显示从这10 个数中选出两个数的所有组合。
( 游戏:选出四张牌)
编写一个程序,从一’副52 张的牌中选出四张,然后计算它们的和。Ace、King,Queen 和Jack 分别表示1、13、12 和11。程序应该显示得到的和为24 的选牌次数。
(模式识别方面:四个连续相等的数)
编写下面的方法,测试某个数组是否有四个连续的值相同的数字。
public static boolean isConsecutiveFour(int[] values)
编写测试程序,提示用户输人一个整数列表,如果这个列表中有四个连续的具有相同值的数,那就显示true ; 否则,显示false。程序应该首先提示用户键人输人的大小,即列表中值的个数。这里是一个运行示例。
Enter the number of values: 8 Enter the values: 3 4 5 5 5 5 4 5 The list has consecutive fours Enter the Enter the number of values: 9 Enter the values: 3 4 5 5 6 5 5 4 5 The list has no consecutive fours
(合并两个有序列表)
编写下面的方法,将两个有序列表合并成一个新的有序列表。
public static int[] merge(int[] listl, int[] list2)
只进行listl.length+list2.length 次比较来实现该方法。编写一个测试程序,提示用户输入两个有序列表,然后显示合并的列表。下面是一个运行示例= 注意,输人的第一个数字表示列表中元素的个数 3 该数字不是列表的一部分。
Enter list1: 5 1 5 16 61 111 Enter list2: 4 2 4 5 6 The merged list is 1 2 4 5 5 6 16 61 111
( 对字符串中的字符排序)
使用以下方法头编写一个方法,返回一个排好序的字符串。
public static String sortCString s)
例如. sort(“acb”)返回abc。编写一个测试程序.提示用户输入一个字符串,显示排好序的字符串。
( 游戏:猜字游戏)
编写一个猜宇游戏。随机产生一个单词,提示用户一次猜测一个宇母,如运行示例所示。单词中的每个字母显示为一个星号。当用户猜测正确后,正确的字母显示出来。当用户猜出一个单词,显示猜错的次数,并且询问用户是否继续对另外一个单词进行游戏。声明一个数组来存储单词,如下所示:
// Add any words you wish in this array String[] words = {"write", "that", ...};
(Guess) Enter a letter in word ******* > p (Guess) Enter a letter in word p****** > r (Guess) Enter a letter in word pr**r** > p p is already in the word (Guess) Enter a letter in word pr**r** > o (Guess) Enter a letter in word pro*r** > g (Guess) Enter a letter in word progr** > n n is not in the word (Guess) Enter a letter in word progr** > m (Guess) Enter a letter in word progr*m > a The word is program. You missed 1 time Do you want to guess another word? Enter y or n> Programming Exercises 285
参考答案
https://github.com/AndrewProgramming/JavaProgrammingHomework/tree/master/src/chpater_array