#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