我有个学生在为AP CS考试学习(他下周参加)。我是在年中/年底被录用的,基本上是这些信息技术课程本学年余下的时间里的一个长期分班。我对java或编程还不太了解,无法向他解释为什么这个实践测试问题的答案是B而不是A(根据答案单)。
我希望这是个能给他解释的好地方.
/** Precondition: arr contains only positive values.
*/
public static void doSome(int[]arr, int lim)
{
int v = 0;
int k = 0;
while (k < arr.length && arr[k] < lim)
{
if (arr[k] > v)
{
v = arr[k]; /* Statement S */
}
k++; /* Statement T */
}
}假设doSome被调用并执行,没有错误。以下哪一种可能的组合用于lim的值、执行语句S的次数和执行语句T的次数?
lim值的可能组合

(A)我只
(B)只限于
(C)仅限
(D)第一和第三条
(E)只有第二和第三条
发布于 2016-04-28 02:34:35
III不是一个有效的组合,因为您不能比执行T多执行S。
从测试的角度看:在这个问题中,这是最重要的洞察力,因为弄清楚这个问题会立即产生3个选项,然后根据猜测将你的投篮量降到50/50。
I不是一个有效的组合,因为数组只包含正值,所有这些值都> 0,因此条件if(arr[k]>v)必须至少返回一次true,这意味着如果while循环体至少执行一次,则至少执行S一次。在选项I中,语句T(也在while循环的主体中)执行5次,因此必须至少执行一次S。
II是值的有效组合。
从测试的角度来看:不值得花时间来证明这一点(例如,通过提供产生这种组合的样本输入),因为消除的过程已经把你带到了一个答案。
因此,选项B,II only,是正确的答案。
AP试题撰写人的道具。
https://stackoverflow.com/questions/36904173
复制相似问题