GESP 四级 · GESP 202412 C++ 四级 第 2 题

选择题 · 答案 B · 考点:函数

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

题目

下面代码的描述中,正确的是( )。

void n_chars(char c, int n) {
    while (n-- > 0)
        cout << c;
}

char my_char = 'w';
int times = 5;
n_chars(my_char, times);
答案:B

考点

函数

解题思维

答案B。>=是大于等于比较运算符,>>=是右移赋值运算符(a>>=3等价于a=a>>3)。两者都是合法的C++运算符。

常见错误

>=是右移赋值运算符,不是比较运算符。a>>=3相当于a=a>>3,将a右移3位。

详细解析(节选)

【考点】函数形参|实参传递|值传递

定位 GESP 四级函数模块,命题人专卡“形参与实参”概念混淆。绝大多数初学者看到函数调用就默认参数会随调用变化,实则 C++ 默认值传递,形参是局部变量,与实参独立。

解析:定义函数 n_chars(char c, int n),形参 n 是局部变量;调用 n_chars(my_char, times) 时,times 作为实参按值拷贝给 n。循环 while(n-- > 0) 仅修改 n,主函数中 times 仍为 5。

选项 A 错在误判值传递效果;C 错在混淆形参与实参定义位置;D 错在忽略类型匹配——函数首参是 char,实参 times 是 int,互换调用会编译失败。

反命题:若函数改为 n_chars(int n, char c),则 D 成立;若改为引用传递 int &n,则 A 正确。刷到此类题先问:考的是参数名、类型还是传递方式?

同考点真题

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