#P1067. 数组专题训练

数组专题训练

  1. 以下关于 C++ 标准一维数组的定义,在编译时严格符合标准的是({{ select(1) }})。
  • int n = 5; int a[n];
  • int a[] = {1, 2, 3, 4};
  • int a[5] = {1, 2, 3, 4, 5, 6};
  • int a[0];
  1. 已知 int a[3][4];,则该数组共包含多少个 int 类型的元素?({{ select(2) }})
  • 7
  • 12
  • 3
  • 4
  1. 二维数组 int a[3][4]; 在内存中的物理存储方式是({{ select(3) }})。
  • 按列连续存储
  • 按行连续存储
  • 随机分散存储
  • 树状存储
  1. 若有定义 int a[3][4] = {{1, 2}, {3, 4}, {5, 6}};,则 a[1][2] 的值是({{ select(4) }})。
  • 0
  • 3
  • 4
  • 随机值
  1. 访问一维数组 int arr[10]; 时,合法的下标范围是({{ select(5) }})。
  • 1 ~ 10
  • 0 ~ 9
  • 0 ~ 10
  • -1 ~ 9
  1. int a[5] = {2, 4, 6, 8, 10};,执行 cout << a[1] + a[3]; 的输出结果是({{ select(6) }})。
  • 6
  • 10
  • 12
  • 14
  1. 定义 char str[10] = "Gesp";,该字符数组在内存中实际被分配的字节数是({{ select(7) }})。
  • 4
  • 5
  • 10
  • 9
  1. 若有定义 int arr[100]; 在普通的局部函数体内(未加 static 关键字),执行 cout << arr[50]; 会输出({{ select(8) }})。
  • 0
  • 1
  • 未初始化的随机值
  • 编译错误
  1. 二维数组 int a[4][5]; 的元素 a[2][3] 是该数组在内存中按行排列的第( )个元素(计数从 1 开始)。({{ select(9) }})
  • 13
  • 14
  • 15
  • 12
  1. 以下哪个操作可以将一个定义好的局部一维数组 int a[5]; 中的所有元素全部正确清零?({{ select(10) }})
  • a = {0};
  • memset(a, 0, sizeof(a));
  • a[5] = {0};
  • a = 0;
  1. 在 C++ 标准大纲中,静态或普通数组在定义时,其大小(中括号内的数值)必须是一个编译时可确定的常量表达式。({{ select(11) }})
  • 正确
  • 错误
  1. 一维数组在物理内存中是连续存放的,而二维数组在物理内存中是分行离散存放的。({{ select(12) }})
  • 正确
  • 错误
  1. 定义了数组 int arr[5]; 后,可以通过语句 arr[5] = 10; 合法且安全地为该数组的最后一个元素赋值。({{ select(13) }})
  • 正确
  • 错误
  1. 如果没有对普通的局部二维数组进行显式初始化,那么该数组内所有元素的值都会被系统默认自动初始化为 0。({{ select(14) }})
  • 正确
  • 错误
  1. 对一维数组使用表达式 sizeof(arr) 可以直接求出该数组所占用的物理内存总字节数。({{ select(15) }})
  • 正确
  • 错误
  1. 二维数组 int a[3][4]; 的行下标有效合法访问范围是 0 到 2。({{ select(16) }})
  • 正确
  • 错误
  1. 在 C++ 中,可以直接使用赋值号将一个一维数组整体赋值给另一个同类型数组,例如 a = b;。({{ select(17) }})
  • 正确
  • 错误
  1. 在定义二维数组并进行整行初始化时,可以省略列数(第二维大小),但绝对不能省略行数(第一维大小)。({{ select(18) }})
  • 正确
  • 错误
  1. 字符数组初始化语句 char s[] = "Hi"; 被执行后,通过 sizeof(s) 获取的字节大小是 3。({{ select(19) }})
  • 正确
  • 错误
  1. 无论是二维数组还是三维数组,它们的所有元素在物理内存里最终都是一维展开、首尾相连、连续存放的。({{ select(20) }})
  • 正确
  • 错误