GESP 四级 · GESP 202606 C++ 四级 第 3 题

选择题 · 答案 C · 考点:函数定义与调用

← 整套速查表 GESP 四级 全部真题

题目

下面程序输出结果是( )。

int addOne(int x) {
    return x + 1;
}
int main() {
    int a = 6;
    cout << addOne(a) + addOne(3);
    return 0;
}
答案:C

考点

函数定义与调用

解题思维

在纸上逐行模拟程序执行,重点追踪变量值变化和输出语句。按照题目输入代入计算。正确答案C。

常见错误

关键提醒:C++中的^是异或运算符,不是乘方!2^5=7而非32。这是最高频的错误。

详细解析(节选)

【考点】函数定义与调用|基本运算|输出格式

考查《GESP 大纲》四级编程基础"函数定义与调用"模块。命题人卡住多数人读题急躁,把函数参数和返回值混淆,实则考最基础的"调用即求值"逻辑。

看到 addOne 先想"返回值=参数+1"。代入 a=6 得 7,addOne(3) 得 4,7+4=11。这一类题通法:若函数 f(x)=x+k,则 f(a)+f(b)=a+b+2k,直接算参数和再加 2 倍偏移量。

A 选项把 addOne(a) 看成了 6+1+2=9,错在把参数本身又加了 2;B 选项漏加了一次,以为 addOne(3)=3+1=4 但 7+4 算成 10;D 选项把两个返回值都多算了 1,变成 8+4=12。最阴险的是 cout 里直接写 addOne(a)+addOne(3),不少人会下意识把 + 当成函数参数的一部分,其实它是表达式运算符。

命题人若把函数改写成 addOne(x)=x*2,答案就变成 12+6=18;若加条件判断如 addOne(x) 仅在 x>5 时返回 x+1 否则返回 x,答案会因 a 和 3 不同而变。刷到这类题先问:命题人想考我函数调用还是运算优先级?

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断