下面 C++ 代码执行时,其说法正确的是( )。
int M = 0, N = 0;
cin >> M;
cin >> N;
if (N > M)
cout << (N - M);
else
cout << (M - N);答案B。if-else可以嵌套,if子句和else子句都可以嵌套if-else。else与最近的未匹配if结合。
else与最近的未匹配且未加花括号的if结合。建议用花括号明确层次。
【考点】if-else 选择结构|整数输入输出
1. 考纲定位 GESP 一级 C++ 第 3 单元"基础语法与算法"。命题人专门卡住初学者对"取绝对值"逻辑的识别力——看到两数差值时,容易忽略绝对值恒非负的本质。
2. 解题思维 代码分两步:先读入 M、N 两个整数;再用 if 判断 N>M 的布尔结果。若为真输出 N-M,否则输出 M-N。无论哪种分支,输出的都是两数差值的绝对值 |N-M|,数学上必然 ≥0。
3. 陷阱拆解
4. 反命题思维 若把 else 改成"不输出",答案就变成 C;若删掉条件判断,输出恒为 N-M,负数情况就全错了。这类题刷到先问:命题人是不是在考"绝对值"这个数学概念?