• C++
  • C++ 一维数组单选题

  • @ 2025-3-27 20:07:51
  1. 在 C++ 中,定义一个包含 5 个整数的一维数组,正确的是( )。 A. int array[5]; B. array int[5]; C. int array(5); D. int[5] array;

  2. 以下代码中,数组 arr 的元素个数是多少?int arr[] = {1, 2, 3, 4, 5}; A. 4 B. 5 C. 6 D. 无法确定

  3. 在 C++ 里,访问数组 arr 中第 3 个元素(数组下标从 0 开始),应该使用( )。 A. arr[2] B. arr[3] C. arr(2) D. arr(3)

  4. 若有数组 int arr[10];,则数组 arr 的最后一个元素的下标是( )。 A. 0 B. 9 C. 10 D. 11

  5. 以下关于一维数组初始化的说法,正确的是( )。 A. 可以只给部分元素赋值,未赋值的元素自动初始化为 0 B. 必须给数组的所有元素都赋值 C. 初始化时元素个数可以超过数组定义的大小 D. 数组初始化只能在定义时进行

  6. 有数组 int arr[5] = {1, 2};,那么 arr[3] 的值是( )。 A. 1 B. 2 C. 0 D. 未定义的值

  7. 在 C++ 中,若要将数组 arr 的所有元素初始化为 0,以下方法正确的是( )。 A. int arr[5] = {0}; B. int arr[5] = {all: 0}; C. int arr[5] = 0; D. int arr[5]; arr = {0};

  8. 已知数组 int arr[5];,以下给数组元素赋值的方式错误的是( )。 A. arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5; B. for(int i = 0; i < 5; i++) { arr[i] = i + 1; } C. arr = {1, 2, 3, 4, 5}; D. int i = 0; while(i < 5) { arr[i] = i + 1; i++; }

  9. 对于数组 int arr[10];,以下能正确计算数组元素个数的是( )。 A. sizeof(arr) / sizeof(arr[0]) B. sizeof(arr) / sizeof(int) C. 以上两种方法都可以 D. 以上两种方法都不可以

  10. 以下代码的输出结果是:int arr[] = {1, 2, 3}; cout << arr[1]; A. 1 B. 2 C. 3 D. 编译错误

  11. 在 C++ 中,数组名代表的是( )。 A. 数组的第一个元素 B. 数组的首地址 C. 数组的元素个数 D. 数组的最后一个元素

  12. 若有数组 int arr[5] = {5, 4, 3, 2, 1};,将数组元素逆序输出的代码可以是( )。 A. for(int i = 4; i >= 0; i--) { cout << arr[i]; } B. for(int i = 0; i < 5; i++) { cout << arr[4 - i]; } C. 以上两种方法都可以 D. 以上两种方法都不可以

  13. 以下代码是否可以编译通过:int arr[]; A. 可以,数组会自动分配内存 B. 不可以,定义数组时必须指定元素个数或进行初始化 C. 可以,后续可以再对数组进行初始化 D. 不可以,数组名不能单独定义

  14. 若有数组 int arr[3] = {1, 2, 3};,将数组元素全部乘以 2 的代码可以是( )。 A. for(int i = 0; i < 3; i++) { arr[i] *= 2; } B. for(int i = 0; i < 3; i++) { arr[i] = arr[i] * 2; } C. 以上两种方法都可以 D. 以上两种方法都不可以

  15. 以下关于数组越界的说法,正确的是( )。 A. 数组越界会导致编译错误 B. 数组越界可能会导致程序崩溃或产生不可预期的结果 C. 数组越界不会有任何影响 D. 数组越界时,程序会自动调整数组大小

  16. 有数组 int arr[4] = {1, 2, 3, 4};,执行 arr[2] = arr[2] + 1; 后,arr[2] 的值是( )。 A. 2 B. 3 C. 4 D. 5

  17. 在 C++ 中,以下哪个操作不能对数组进行( )。 A. 整体赋值 B. 逐个元素赋值 C. 计算数组元素个数 D. 遍历数组元素

  18. 若要从用户输入中读取 5 个整数存储到数组 arr 中,以下代码正确的是( )。 A. for(int i = 0; i < 5; i++) { cin >> arr[i]; } B. for(int i = 0; i < 5; i++) { cin << arr[i]; } C. for(int i = 0; i < 5; i++) { arr[i] = cin; } D. for(int i = 0; i < 5; i++) { arr[i] >> cin; }

  19. 以下代码的输出结果是:int arr[] = {10, 20, 30}; cout << sizeof(arr); A. 3 B. 6 C. 12 D. 无法确定

1 条评论

  • @ 2025-3-27 20:08:06

    以下是 20 道 C++ 一维数组单选题的详细解析和答案:

    答案与解析

    1. 正确答案:A

    解析:C++ 中数组定义的正确语法是 类型 数组名[大小];,选项 A 符合要求。其他选项语法错误(如 B 中 array 关键字错误,C 用圆括号初始化,D 顺序错误)。

    2. 正确答案:B

    解析:数组 arr 未指定大小,但初始化列表有 5 个元素,因此元素个数为 5。

    3. 正确答案:A

    解析:数组索引从 0 开始,第 3 个元素的索引是 2,访问方式为 arr[2]

    4. 正确答案:B

    解析:数组 arr[10] 的索引范围是 0~9,最后一个元素的下标是 9。

    5. 正确答案:A

    解析:C++ 允许部分初始化数组,未初始化的元素自动初始化为 0。其他选项错误(B 不强制全部赋值,C 初始化元素不能超过数组大小,D 可动态赋值)。

    6. 正确答案:C

    解析:数组 arr 初始化前两个元素,arr[3] 未显式赋值,自动初始化为 0。

    7. 正确答案:A

    解析:初始化列表 {0} 会扩展为所有元素初始化为 0。其他选项语法错误(B 无 all 关键字,C 直接赋值错误,D 数组不能整体赋值)。

    8. 正确答案:C

    解析:数组不能直接整体赋值(如 arr = {1,2,3,4,5};),必须逐个元素赋值或使用循环。

    9. 正确答案:C

    解析sizeof(arr) 是数组总字节数,sizeof(arr[0]) 是单个元素字节数,两者相除得到元素个数。对于 int 数组,sizeof(int) 也适用。

    10. 正确答案:B

    解析:数组 arr 的索引 1 对应元素 2,输出结果为 2。

    11. 正确答案:B

    解析:数组名 arr 代表数组的首地址,而非第一个元素的值。

    12. 正确答案:C

    解析:选项 A 逆序遍历索引,选项 B 通过 4 - i 访问逆序元素,两种方法均正确。

    13. 正确答案:B

    解析:定义数组时必须指定大小或初始化,否则编译错误(如 int arr[]; 无大小和初始化)。

    14. 正确答案:C

    解析:两种循环方式均正确,arr[i] *= 2arr[i] = arr[i] * 2 的简写。

    15. 正确答案:B

    解析:数组越界不会导致编译错误,但可能引发未定义行为(如程序崩溃或数据错误)。

    16. 正确答案:C

    解析:原数组 arr[2] = 3,执行 arr[2] += 1 后变为 4。

    17. 正确答案:A

    解析:C++ 不支持数组整体赋值(如 arr = {1,2,3}),必须逐个元素赋值。

    18. 正确答案:A

    解析:正确输入方式为 cin >> arr[i],其他选项语法错误(如 B 使用 <<,C、D 逻辑错误)。

    19. 正确答案:C

    解析:数组 arr 包含 3 个 int 元素,每个 int 通常为 4 字节,总大小为 3 × 4 = 12 字节。

    答案汇总

    题号 答案 题号 答案
    1 A 10 B
    2 B 11
    3 A 12 C
    4 B 13 B
    5 A 14 C
    6 C 15 B
    7 A 16 C
    8 C 17 A
    9 18
    19 C

    通过以上解析,可系统掌握 C++ 一维数组的定义、初始化、访问及常见操作。

    • 1