#6085. gesp四级真题分类一:函数与参数传递

gesp四级真题分类一:函数与参数传递


一、函数与参数传递(共23题)

题目文件

函数与参数传递(共23题)

1. 下面有关函数参数的说法,正确的是( )。

{{ select(1) }}

  • 函数参数传递时,主函数当中采用值传递方式将参数传递给子函数时,若子函数将参数值改变,主函数当中的参数值不变。
  • 函数参数传递时,主函数当中采用值传递方式将参数传递给子函数时,若子函数将参数值改变,主函数当中的参数值将随子函数一样改变而改变。
  • 函数参数传递时,主函数如果将参数的地址传递给子函数,若子函数将参数值改变,主函数当中的参数值将不改变。
  • 函数参数传递可以不满足子函数的参数个数要求。

2. 若函数声明为 int f(int &x){ x += 3; return x; },则对声明的变量 int a = 3,下面哪个调用能够改变 a 的值( )。

{{ select(2) }}

  • f(&a);
  • f(*a);
  • f(a);
  • f(a-3);

3. 下面代码执行后输出是( )。

int fun1(int *n) { return *n * *n; }
int main() {
    int arr[10] = {2};
    arr[1] = fun1(arr);
    cout << arr[1] << endl;
}

{{ select(3) }}

  • 1
  • 2
  • 4
  • 编译错误

4. 在C++中,()正确定义了一个返回整数值并接受两个整数参数的函数。

{{ select(4) }}

  • int add(int a, int b){ return a+b; }
  • void add(int a, int b){ return a+b; }
  • int add(a,b){ return a+b; }
  • void add(int a, int b){ return a-b; }

5. 在C++中,形参与实参的关系描述正确的是( )。

{{ select(5) }}

  • 形参在函数调用时指定,实参在函数定义时传递
  • 形参在函数定义时指定,实参在函数调用时传递
  • 形参和实参可以互换
  • 形参和实参必须是完全相同的类型,不能有任何差异

6. 运行以下代码,屏幕上将输出( )。

int var = 100;
void function() {
    int var = 200;
    cout << var << " ";
    cout << ::var << " ";
}
int main() {
    cout << var << " ";
    function();
    var += 100;
    cout << var << " ";
}

{{ select(6) }}

  • 100 200 100 200
  • 100 200 100 300
  • 100 200 200 200
  • 100 200 200 300

7. 下面的语句中,()正确定义了一个计算浮点数 x 的平方 (x² = x×x) 的函数,并成功调用该函数。

{{ select(7) }}

  • float square(float x) { return x * x; }
    float area = square(2);
    
  • square(float x) { return x * x; }
    float area = square(2);
    
  • void square(float x) { return x * x; }
    area = square(2.0);
    
  • void square(float x) { x * x; return; }
    area = square(2);
    

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

void n_chars(char c, int n) {
    while (n-- > 0)
        cout << c;
}
char my_char = 'w';
int times = 5;
n_chars(my_char, times);

{{ select(8) }}

  • 代码执行结束后,times 的值为 0
  • n 是形参,times 是实参
  • n 是实参,times 是形参
  • 代码最后一行换成 n_chars(times, my_char); 也可以

9. 给定以下代码,执行后变量 a 的值为( )。

void func(int& x) { x = x * 2; }
int a = 5;
func(a);

{{ select(9) }}

  • 5
  • 10
  • 15
  • 20

10. 关于下述代码,说法错误的是( )。

int multiply(int x, int y);
int main() {
    int a = 4, b = 5;
    int result = multiply(a, b);
    cout << "The result is: " << result << endl;
    return 0;
}
int multiply(int x, int y) { return x * y; }

{{ select(10) }}

  • 函数 multiply 的定义应该放到函数 main 之前。
  • 函数声明 int multiply(int x, int y); 中明确指定了函数 multiply() 的返回值为整数类型。
  • 在 main 函数中,函数 multiply 通过 multiply(a, b) 被调用,其中 a 和 b 是实参,传递给形参 x 和 y。
  • 运行上述代码,将输出 The result is: 20。

11. 执行下述代码将输出( )。

int x = 10;
void func() { int x = 20; std::cout << x; }
int main() {
    func();
    std::cout << x;
    return 0;
}

{{ select(11) }}

  • 2020
  • 2010
  • 1020
  • 编译错误

12. 执行下述代码后,变量 a 的值为( )。

int a = 10;
int* p = &a;
*p = 20;

{{ select(12) }}

  • 10
  • 20
  • 随机值
  • 编译错误

13. 执行下述代码,将输出( )。

void swap(int a, int &b) {
    int temp = a;
    a = b;
    b = temp;
}
int main() {
    int x = 1, y = 2;
    swap(x, y);
    std::cout << x << y;
    return 0;
}

{{ select(13) }}

  • 12
  • 21
  • 22
  • 11

14. 执行下面程序后,输出为( )。

int f(int x = 2) { return x * 3; }
int main() {
    cout << f() << " " << f(4);
}

{{ select(14) }}

  • 2 12
  • 6 12
  • 6 4
  • 12 6

15. 执行下面代码后,输出为( )。

int main() {
    int a = 5;
    int* p = &a;
    int** q = &p;
    **q += 7;
    cout << a << " " << *p;
}

{{ select(15) }}

  • 5 5
  • 12 12
  • 12 5
  • 5 12

16. 执行下面程序后,输出为( )。

void fun(int a, int &b, int *c) {
    a += 1;
    b += 2;
    *c += 3;
}
int main() {
    int x = 1, y = 1, z = 1;
    fun(x, y, &z);
    cout << x << " " << y << " " << z;
}

{{ select(16) }}

  • 2 3 4
  • 1 3 4
  • 2 1 4
  • 1 1 1

17. 执行下面程序后输出为( )。

int x = 3;
void f(int &x) { x += 2; }
int main() {
    int x = 10;
    f(x);
    cout << x << " " << ::x;
}

{{ select(17) }}

  • 12 3
  • 10 5
  • 12 5
  • 10 3

18. 下面程序可以正常编译并输出10。(判断题)

int calc(int x, int y = 10);
int calc(int x) { return x * 2; }
int calc(int x, int y) { return x * y; }
int main() { cout << calc(5); }

{{ select(18) }}

  • 正确
  • 错误

19. 下面代码执行结束时,变量 a 的值变成15。(判断题)

void add10(int &x) { x += 10; }
int main() { int a = 5; add10(a); }

{{ select(19) }}

  • 正确
  • 错误

20. 引用一旦绑定某个变量,就不能再绑定其他变量。(判断题)

{{ select(20) }}

  • 正确
  • 错误

21. 两个函数之间可以使用全局变量来传递数据。(判断题)

{{ select(21) }}

  • 正确
  • 错误

22. 在C++语言中,函数的参数为指针时,可以在函数内部修改该参数的值。(判断题)

{{ select(22) }}

  • 正确
  • 错误

23. 在C++语言中,try子句里抛出的结构体等类型的异常无法被catch捕获。(判断题)

{{ select(23) }}

  • 正确
  • 错误