在下列代码的横线处填写( ),可以使得输出是“1357”,不会有多余字符。 
这题核心是看循环的三要素:初值、步长和终止条件。输出“1357”意味着要取下标0,2,4,6的字符,所以初值必须是0,步长必须是2,终止条件要覆盖到6。直接代入选项验证,D项完美匹配。
最容易掉进两个坑:一是机械套用模板,看到字符串就下意识填i<strlen(str),结果步长变1输出了全串;二是把条件写错,比如用str[i]!=0这种访问结果当循环条件,或者初值写成1导致漏掉第一个字符。记住,循环变量只跟数字有关,跟字符串内容无关,别被题目里的str干扰了。
本题属于GESP三级循环控制与字符串索引的基础结合。考查点非常明确:for循环的初始化、条件判断、步进表达式三要素如何配合,以及字符串下标从0开始计数的基本常识。命题人特意选了“输出1357”这个结果,就是想看你能不能准确识别出需要遍历的是下标0,2,4,6这几个位置,而不是整串字符。这属于典型的“只考结构、不考内容”的纯逻辑题。
拿到这种填空选择题,第一反应应该是“先算下标,再填代码”。 1. 看结果反推下标:输出是“1357”,假设原字符串是“13579”,那对应的位置就是第1、3、5、7个字符。因为C/C++字符串下标从0开始,所以实际要访问的下标是0, 2, 4, 6。 2. 确定循环三要素: - 初值:必须从0开始,否则第一个字符拿不到。 - 步长:因为要隔一个取一个(0->2->4->6),所以i每次要加2。 - 终止条件:要能取到6,所以条件必须包含6。如果是i<6,6就取不到了;必须是i<=6。 3. 代入验证:把上述逻辑代入选项,D项int i = 0; i <= 6; i += 2完全吻合。