正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-J 2025 第一轮真题 › 第 10 题
CSP-J 2025 第一轮 第 10 题:solve(x,y) 调用后 x 和 y 的值
题目
考虑以下 C++ 函数:
void solve(int &a, int b) {
a = a + b;
b = a - b;
a = a - b;
}
int main() {
int x = 5, y = 10;
solve(x, y);
}
在 main 函数调用 solve 后,$x$ 和 $y$ 的值分别是?
选项
- A. $5,10$
- B. $10,5$
- C. $10,10$
- D. $5,5$
答案
C
题解
答案是 C:\(x=10,\ y=10\)。
关键在于参数的传递方式:
int &a是引用参数,a就是x的别名,修改a会修改x。int b是值参数,b只是y的副本,修改b不会影响y。
进入函数时,a = 5,b = 10,逐步执行:
| 语句 | a(即 x) | b | y |
|---|---|---|---|
a = a + b; | 15 | 10 | 10 |
b = a - b; | 15 | 5 | 10 |
a = a - b; | 10 | 5 | 10 |
所以函数结束后,x 变成 10,y 仍然是 10。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号