下面程序输出结果是( )。
int addOne(int x) {
return x + 1;
}
int main() {
int a = 6;
cout << addOne(a) + addOne(3);
return 0;
}在纸上逐行模拟程序执行,重点追踪变量值变化和输出语句。按照题目输入代入计算。正确答案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 不同而变。刷到这类题先问:命题人想考我函数调用还是运算优先级?