#Z0005. C++阶段测试(第 32 节 ~ 第 36 节)
C++阶段测试(第 32 节 ~ 第 36 节)
C++ 阶段测试(第 32 节 ~ 第 36 节)
共 40 题,全部为单项选择题,每题 2.5 分,满分 100 分。考试时间 30 分钟。 其中第 1~28 题为容易题(每题 2.5 分,共 70 分),第 29~40 题为较难题(每题 2.5 分,共 30 分)。
第 1 题
1.定义 int a[10]; 后,数组元素合法的下标范围是( )。
{{ select(1) }}
- 1~10
- 0~9
- 0~10
- 1~9
第 2 题
2.执行 int a[5] = {1, 2}; 后,a[4] 的值是( )。
{{ select(2) }}
- 0
- 2
- 1
- 不确定的随机值
第 3 题
3.定义 int a[] = {3, 1, 4, 1, 5, 9};,这个数组共有( )个元素。
{{ select(3) }}
- 5
- 7
- 6
- 不确定
第 4 题
4.定义 int a[5]; 后,下列访问中会发生下标越界的是( )。
{{ select(4) }}
- a[0]
- a[4]
- a[2]
- a[5]
第 5 题
5.阅读下面的程序,执行后输出的结果是( )。
int a[5] = {2, 4, 6, 8, 10};
int s = 0;
for (int i = 0; i < 5; i++) s += a[i];
cout << s;
{{ select(5) }}
- 20
- 30
- 28
- 55
第 6 题
6.阅读下面的程序,执行后输出的结果是( )。
int a[6] = {7, 3, 9, 1, 8, 2};
int mx = a[0];
for (int i = 1; i < 6; i++)
if (a[i] > mx) mx = a[i];
cout << mx;
{{ select(6) }}
- 9
- 7
- 8
- 6
第 7 题
7.定义 int a[3][4]; 后,这个二维数组共有( )个元素。
{{ select(7) }}
- 7
- 12
- 3
- 4
第 8 题
8.定义 int a[3][4]; 后,下列访问中会发生下标越界的是( )。
{{ select(8) }}
- a[0][0]
- a[2][3]
- a[3][0]
- a[1][2]
第 9 题
9.执行 int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; 后,a[1][2] 的值是( )。
{{ select(9) }}
- 3
- 5
- 0
- 6
第 10 题
10.阅读下面的程序,执行后输出的结果是( )。
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int s = 0;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
s += a[i][j];
cout << s;
{{ select(10) }}
- 21
- 18
- 15
- 6
第 11 题
11.阅读下面的程序,关于输出结果的描述正确的是( )。
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) cout << a[i][j] << " ";
cout << endl;
}
{{ select(11) }}
- 输出 1 行,共 6 个数
- 输出 2 行,每行 3 个数
- 输出 3 行,每行 2 个数
- 输出 6 行,每行 1 个数
第 12 题
12.阅读下面的程序,执行后输出的结果是( )。
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int j = 0; j < 3; j++)
for (int i = 0; i < 2; i++)
cout << a[i][j] << " ";
{{ select(12) }}
- 1 4 2 5 3 6
- 1 2 3 4 5 6
- 1 2 4 5 3 6
- 4 5 6 1 2 3
第 13 题
13.执行 char s[] = "hello"; 后,数组 s 占用的字节数是( )。
{{ select(13) }}
- 5
- 7
- 6
- 4
第 14 题
14.在 C++ 中,字符串的结束标志是( )。 {{ select(14) }}
- '\n'
- '0'
- 空格
- '\0'
第 15 题
15.执行下面的语句,输入 hello world 后,数组 s 中存放的内容是( )。
char s[20];
cin >> s;
{{ select(15) }}
- hello world
- hello
- world
- 出错,程序崩溃
第 16 题
16.要从键盘读入一整行可能带空格的字符串,下列做法正确的是( )。 {{ select(16) }}
- cin.getline(s, 100);
- cin >> s;
- cin >> s[0];
- cin.get(s);
第 17 题
17.关于字符 'A' 和字符串 "A",下列说法正确的是( )。 {{ select(17) }}
- 字符 'A' 和字符串 "A" 都占 1 个字节
- 字符 'A' 占 2 个字节,字符串 "A" 占 1 个字节
- 字符 'A' 占 1 个字节,字符串 "A" 占 2 个字节
- 二者完全相同,可以互相赋值
第 18 题
18.阅读下面的程序,执行后输出的结果是( )。
char s[] = "abcde";
cout << strlen(s);
{{ select(18) }}
- 6
- 4
- 7
- 5
第 19 题
19.阅读下面的程序,执行后输出的结果是( )。
char s[] = "C++";
for (int i = 0; s[i] != '\0'; i++) cout << s[i];
{{ select(19) }}
- C++
- C
- C+
- ++C
第 20 题
20.阅读下面的程序,执行后输出的结果是( )。
void f(int x) { x = x + 1; }
int main() {
int a = 5;
f(a);
cout << a;
}
{{ select(20) }}
- 6
- 5
- 0
- 编译错误
第 21 题
21.在函数内部定义的变量称为( )。 {{ select(21) }}
- 全局变量
- 静态变量
- 局部变量
- 常量
第 22 题
22.定义在所有函数之外的变量(全局变量),其作用范围是( )。 {{ select(22) }}
- 只在定义它的那一行有效
- 只在 main 函数中有效
- 只在定义它之后的那条语句中有效
- 从定义处开始,到整个程序结束都有效
第 23 题
23.当局部变量与全局变量同名时,下列说法正确的是( )。 {{ select(23) }}
- 在该函数内,同名的局部变量优先,全局变量被"屏蔽"
- 全局变量优先,局部变量不起作用
- 程序一定会出现编译错误
- 两个变量其实是同一块内存
第 24 题
24.在函数内部定义 int a; 但没有赋初值,此时 a 的值是( )。
{{ select(24) }}
- 一定是 0
- 不确定的值
- 编译错误
- 一定是 -1
第 25 题
25.阅读下面的程序,执行后输出的结果是( )。
int add(int a, int b) { return a + b; }
int main() { cout << add(3, 4); }
{{ select(25) }}
- 34
- 12
- 7
- 3
第 26 题
26.在函数中执行到 return 语句时,程序会( )。 {{ select(26) }}
- 只把值返回给调用处,函数继续往下执行
- 结束整个程序
- 相当于 continue,跳过本次循环
- 立即结束当前函数的执行,回到调用处
第 27 题
27.阅读下面的程序,执行后输出的结果是( )。
int f(int x) {
if (x > 0) return 1;
if (x < 0) return -1;
return 0;
}
int main() { cout << f(-3); }
{{ select(27) }}
- -1
- 1
- 0
- 3
第 28 题
28.阅读下面的程序,执行后输出的结果是( )。
int f(int n) {
if (n == 1) return 1;
return n * f(n - 1);
}
int main() { cout << f(4); }
{{ select(28) }}
- 4
- 24
- 12
- 10
第 29 题
29.关于数组下标越界,下列说法正确的是( )。 {{ select(29) }}
- 编译时一定会报错,程序无法通过编译
- 运行时一定会立刻崩溃并给出明确的错误提示
- 编译器通常不检查下标是否越界,程序可能读到别的变量的值,也可能异常结束
- 越界访问只会读到 0,不会产生其他影响
第 30 题
30.阅读下面的程序,执行后输出的结果是( )。
int a[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 2; i++) {
int t = a[i];
a[i] = a[4 - i];
a[4 - i] = t;
}
for (int i = 0; i < 5; i++) cout << a[i];
{{ select(30) }}
- 12345
- 54322
- 12321
- 54321
第 31 题
31.已知有数组 int a[3][4];,下列函数声明中能正确接收这个数组的是( )。
{{ select(31) }}
- void f(int a[][4], int n)
- void f(int a[][], int n)
- void f(int a[3][], int n)
- void f(int *a[4], int n)
第 32 题
32.阅读下面的程序,执行后输出的结果是( )。
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int s = 0;
for (int i = 0; i < 3; i++) {
s += a[i][i];
s += a[i][2 - i];
}
cout << s;
{{ select(32) }}
- 15
- 25
- 30
- 45
第 33 题
33.已知 int a[4][5];,二维数组按行优先顺序存储,则元素 a[2][1] 是整个数组中的第( )个元素(从 1 开始计数)。
{{ select(33) }}
- 11
- 12
- 21
- 6
第 34 题
34.阅读下面的程序,strcmp 的返回值( )。
char a[] = "apple", b[] = "app";
cout << strcmp(a, b);
{{ select(34) }}
- 一定等于 0
- 一定是负数
- 编译错误
- 是一个正数
第 35 题
35.阅读下面的程序,执行后输出的结果是( )。
char a[] = "abc", b[] = "abd";
int i = 0;
while (a[i] != '\0' && a[i] == b[i]) i++;
cout << i;
{{ select(35) }}
- 2
- 3
- 0
- 1
第 36 题
36.阅读下面的程序,执行后输出的结果是( )。
void swap(int a, int b) {
int t = a;
a = b;
b = t;
}
int main() {
int x = 1, y = 2;
swap(x, y);
cout << x << y;
}
{{ select(36) }}
- 21
- 12
- 1 2
- 2 1
第 37 题
37.阅读下面的程序,执行后输出的结果是( )。
void f() {
static int s = 0;
s++;
cout << s;
}
int main() {
f();
f();
f();
}
{{ select(37) }}
- 111
- 012
- 123
- 3
第 38 题
38.阅读下面的程序,执行后输出的结果是( )。
int s = 0;
void add(int x) { s += x; }
int main() {
add(3);
add(5);
cout << s;
}
{{ select(38) }}
- 35
- 3
- 5
- 8
第 39 题
39.阅读下面的程序,执行后输出的结果是( )。
int f(int n) {
if (n <= 2) return 1;
return f(n - 1) + f(n - 2);
}
int main() { cout << f(6); }
{{ select(39) }}
- 5
- 6
- 13
- 8
第 40 题
40.阅读下面的程序,执行后输出的结果是( )。
int f(double x) { return x; }
int main() { cout << f(3.9); }
{{ select(40) }}
- 4
- 3.9
- 3
- 0