用上下文推

8 分钟

填空的答案几乎都藏在相邻几行里,孤立地看空所在那一行往往推不出来。要往上看"这个变量是怎么定义、初始化的",往下看"这个结果后面被怎么用",两头一夹,答案就浮出来了。

int mx = a[0];                 // 往上看:mx 是"当前最大值",初值取首元素
for (int i = 1; i < n; i++)
    if (a[i] > ____)           // 空:要和"当前最大值"比,填 mx
        mx = a[i];             // 往下看:更新 mx,印证上面的猜测
cout << mx;

空里该填 mx:上一行告诉我们 mx 是当前最大值,下一行 mx = a[i] 说明比较的目的是更新它,所以条件必然是 a[i] > mx。坑:只盯着 if (a[i] > ____) 这一行,你无从知道该和谁比;必须结合上下文建立"每个变量代表什么"。技巧:先在草稿上给每个变量写一句"它是干嘛的",再回头填空,相邻代码就是最好的提示。

小纸条

为什么"孤立地看这一行"填不出来?

登录 后可看答案

用上下文推 · 考级冲刺 · op599 课程