#3478. E4jxhm2
E4jxhm2
一、单选题(40分,每题10分)
- 有以下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
- 关于C++中函数的参数传递,下列说法正确的是( )。 {{ select(2) }}
- 数组作为参数传给函数时,函数内部对数组元素的修改不会影响原数组
- 普通变量作为参数传给函数时,函数内部对该参数的修改会影响原变量
- 数组作为参数传给函数时,实际上传递的是数组首地址,函数内部对数组元素的修改会影响原数组
- 结构体变量作为参数传给函数时,函数内部对结构体成员的修改一定会影响原结构体变量
- 以下代码中,变量
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被重复定义
- 定义如下结构体及变量:
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分)
- 关于C++函数的参数传递,下列说法正确的有( )。 {{ multiselect(5) }}
- 值传递时,形参是实参的副本,修改形参不影响实参
- 数组作为函数参数时,实际上是将整个数组复制一份传给函数
- 结构体作为函数参数时,如果不加引用符号
&,属于值传递 - 使用引用参数
&可以直接修改实参变量的值
- 关于二维数组,下列说法正确的有( )。 {{ multiselect(6) }}
- 二维数组在内存中是按行存储的
int a[3][4]定义的二维数组共有12个元素- 二维数组可以看作“数组的数组”,即每个元素是一个一维数组
- 定义二维数组时,行数和列数都可以省略不写
- 关于结构体(struct),下列说法正确的有( )。 {{ multiselect(7) }}
- 结构体可以将不同类型的数据组合在一起
- 结构体成员可以是数组
- 可以定义结构体数组
- 结构体变量之间不能整体赋值
三、判断题(30分,每题10分)
- 在C++中,全局变量和局部变量同名时,在局部变量的作用域内,局部变量会屏蔽全局变量。( ) {{ select(8) }}
- 正确
- 错误
- 定义二维数组
int a[2][3] = {{1,2,3},{4,5,6}};后,a[1][2]的值是5。( ) {{ select(9) }}
- 正确
- 错误
- 函数参数为结构体类型时,如果不使用引用传递,修改形参中的成员变量会影响实参结构体的对应成员。( ) {{ select(10) }}
- 正确
- 错误