AP计算机2017年考试:主观题解答
第一大题
第一问
考察取模和整数除法,以及在ArrayList的头部添加元素。注意按某个基(AP计算机中目前都只出现十进制)将整数分解成数字算法的递归版本在多项选择中时有出现,需要掌握。
public Digits(int num)
{
digitList = new ArrayList<Integer>();
if (num == 0)
{
digitList.add(new Integer(0));
}
while (num > 0)
{
digitList.add(0, new Integer(num % 10));
num /= 10;
}
}
第二问
考察对ArrayList元素的循环,注意循环条件需要比正常情况的少一。在循环中一旦不满足条件就直接return也是在AP计算机考试中常见的编程模式。
public boolean isStrictlyIncreasing()
{
for (int i = 0; i < digitList.size()-1; i++)
{
if (digitList.get(i).intValue() >= digitList.get(i+1).intValue())
{
return false;
}
}
return true;
}
第二大题
送分题,考interface和一些面向对象编程的基本概念。
public class MultPractice implements StudyPractice
{
private int first;
private int second;
public MultPractice(int num1, int num2)
{
first = num1;
second = num2;
}
public String getProblem()
{
return first + " TIMES " + second;
}
public void nextProblem()
{
second++;
}
}
第三大题
第一问
需要正确使用题目中给出的method,知道如何计算String的索引并应用substring进行裁剪。
public void replaceNthOccurrence(String str, int n, String repl)
{
int loc = findNthOccurrence(str, n);
if (loc != -1)
{
currentPhrase = currentPhrase.substring(0, loc) + repl +
currentPhrase.substring(loc + str.length());
}
}
第二问
主要考察循环的正确用法以及对n的计算。
public int findLastOccurrence(String str)
{
int n = 1;
while (findNthOccurrence(str, n+1) != -1)
{
n++;
}
return findNthOccurrence(str, n);
}
第四大题
第一问
遍历二维数组,送分题。return的模式再一次出现。
public static Position findPosition(int num, int[][] intArr)
{
for (int row=0; row < intArr.length; row++)
{
for (int col=0; col < intArr[0].length; col++)
{
if (intArr[row][col] == num)
{
return new Position(row, col);
}
}
}
return null;
}
第二问
再遍历一遍,创建一个object的二维数组很基本,必须掌握。
public static Position[][] getSuccessorArray(int[][] intArr)
{
Position[][] newArr = new Position[intArr.length][intArr[0].length];
for (int row=0; row < intArr.length; row++)
{
for (int col=0; col < intArr[0].length; col++)
{
newArr[row][col] = findPosition(intArr[row][col]+1, intArr);
}
}
return newArr;
}
0 条评论