以下Java代码片段旨在根据输入的百分制成绩 `score` 转换为等级制成绩 `grade`,其中 'A' 代表 90 分及以上,'B' 代表 80-89 分,'C' 代表 70-79 分,'D' 代表 60-69 分,'E' 代表 60 分以下。若输入 `score` 为 70,以下哪种修改方式会导致输出结果不符合预期? ```java int score = 70; char grade; if (score >= 90) { grade = 'A'; } else if (score >= 80) { grade = 'B'; } else if (score >= 70) { grade = 'C'; } else if (score >= 60) { grade = 'D'; } else { grade = 'E'; } System.out.println("Grade: " + grade); ```
答案解析
A选项的修改会使`if (score >= 70)` 成为一个独立的`if`语句, 之前的`if (score >= 90)` 和 `else if (score >= 80)` 已经无法形成互斥的条件分支,当score为70时,所有if条件都为false,程序走到最后的else语句,grade的值变为'E',与预期不符,为正确答案。
B选项的修改会导致当分数同时大于等于80和70时,会执行两个`if`语句分支,但最终`grade`的值仍然是'C', 不影响输出结果。
C选项的修改只是修改了边界值的判断条件,当输入为70时,代码逻辑不影响,输出结果依然为 'C'。
D选项的修改,将60分的判断改为了大于,当分数大于等于60的时候,都会进入else if 的判断,但当等于60分时会跳过这个判断继续往下走进入else分支,赋值为E,如果分数是70,会执行else if,赋值为D,与预期不符
正确答案:A