#CSPJ26D19. 2026 年 8 月 CSP-J 初赛 20 日打卡 Day19|引用、函数参数与作用域
2026 年 8 月 CSP-J 初赛 20 日打卡 Day19|引用、函数参数与作用域
Day 19 引用、函数参数与作用域
建议用时:20~25 分钟。请先打开今日知识卡完成复习,再独立提交本页答案。
今日学习资料
复习目标:理解引用是变量的别名,分清值传递、引用传递和指针传递,并能追踪函数调用前后的变量变化。
今日练习
-
【CSP-J 2025·第 10 题】考虑以下 C++ 函数,在
main函数调用solve后,x和y的值分别是( )。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); }
{{ select(1) }}
5, 1010, 510, 105, 5
-
执行下面的代码后,
x的值是( )。void f(int a) { a += 3; } int x = 7; f(x);
{{ select(2) }}
- 7
- 10
- 3
- 无法确定
-
执行下面的代码后,
x的值是( )。int x = 7; int y = 12; int &r = x; r = y;
{{ select(3) }}
- 7
- 12
y的地址r改为y的别名,x不变
- 下列引用定义正确的是( )。
{{ select(4) }}
int &r;int x=3; int &r=x;int &r=nullptr;int x=3; int &r=&x;
- 已知
int x=3; const int &r=x;,下列说法正确的是( )。
{{ select(5) }}
- 可以执行
r=5修改x r可以随时改绑到另一个变量- 不能通过
r修改所绑定的值 r没有绑定任何对象
主题程序阅读
阅读下面的程序:
#include <iostream>
using namespace std;
void adjust(int a, int &b, int *c) {
a += 1;
b += a;
*c = b - a;
}
int main() {
int x = 3, y = 5, z = 8;
adjust(x, y, &z);
cout << x << ' ' << y << ' ' << z << endl;
return 0;
}
- 在
adjust中执行a += 1;后,形参a和主函数变量x的值分别是( )。
{{ select(6) }}
4, 44, 33, 43, 3
- 执行
b += a;后,主函数变量y的值是( )。
{{ select(7) }}
- 5
- 8
- 9
- 13
- 程序最终输出( )。
{{ select(8) }}
4 9 53 9 53 5 84 5 4