#3478. E4jxhm2

E4jxhm2

一、单选题(40分,每题10分)

  1. 有以下C++代码:
int arr[3][4] = {{1, 2, 3, 4},
                 {5, 6, 7, 8},
                 {9, 10, 11, 12}};
cout << arr[1][2] + arr[2][0] << endl;

输出结果是( )。 {{ select(1) }}

  • 16
  • 17
  • 15
  • 12
  1. 关于C++中函数的参数传递,下列说法正确的是( )。 {{ select(2) }}
  • 数组作为参数传给函数时,函数内部对数组元素的修改不会影响原数组
  • 普通变量作为参数传给函数时,函数内部对该参数的修改会影响原变量
  • 数组作为参数传给函数时,实际上传递的是数组首地址,函数内部对数组元素的修改会影响原数组
  • 结构体变量作为参数传给函数时,函数内部对结构体成员的修改一定会影响原结构体变量
  1. 以下代码中,变量 x 的作用域范围是( )。
#include <iostream>
using namespace std;
int x = 10;

void func() {
    int x = 20;
    cout << x << endl;
}

int main() {
    cout << x << endl;
    func();
    cout << x << endl;
    return 0;
}

{{ select(3) }}

  • 整个文件,且所有位置都输出10
  • 全局变量 x 作用于整个文件,但在 func 函数内被局部变量 x 屏蔽,输出结果为 10、20、10
  • 局部变量 x 作用于整个文件
  • 编译错误,因为变量 x 被重复定义
  1. 定义如下结构体及变量:
struct Student {
    string name;
    int score[3];
};
Student s1 = {"Alice", {80, 90, 85}};

下列选项中,能正确输出 s1 第二门课成绩的是( )。 {{ select(4) }}

  • cout << s1.score[2];
  • cout << s1.score[1];
  • cout << s1.score[0];
  • cout << s1[1].score;

二、多选题(30分,每题10分)

  1. 关于C++函数的参数传递,下列说法正确的有( )。 {{ multiselect(5) }}
  • 值传递时,形参是实参的副本,修改形参不影响实参
  • 数组作为函数参数时,实际上是将整个数组复制一份传给函数
  • 结构体作为函数参数时,如果不加引用符号 &,属于值传递
  • 使用引用参数 & 可以直接修改实参变量的值
  1. 关于二维数组,下列说法正确的有( )。 {{ multiselect(6) }}
  • 二维数组在内存中是按行存储的
  • int a[3][4] 定义的二维数组共有12个元素
  • 二维数组可以看作“数组的数组”,即每个元素是一个一维数组
  • 定义二维数组时,行数和列数都可以省略不写
  1. 关于结构体(struct),下列说法正确的有( )。 {{ multiselect(7) }}
  • 结构体可以将不同类型的数据组合在一起
  • 结构体成员可以是数组
  • 可以定义结构体数组
  • 结构体变量之间不能整体赋值

三、判断题(30分,每题10分)

  1. 在C++中,全局变量和局部变量同名时,在局部变量的作用域内,局部变量会屏蔽全局变量。( ) {{ select(8) }}
  • 正确
  • 错误
  1. 定义二维数组 int a[2][3] = {{1,2,3},{4,5,6}}; 后,a[1][2] 的值是5。( ) {{ select(9) }}
  • 正确
  • 错误
  1. 函数参数为结构体类型时,如果不使用引用传递,修改形参中的成员变量会影响实参结构体的对应成员。( ) {{ select(10) }}
  • 正确
  • 错误