C语言二维数组选择题练习-3

2025年1月29日 | 阅读 4 分钟

1. int arr[4][3]; 的声明是什么意思?

  1. 4个元素,3个元素
  2. 4行,3列
  3. 4列,3行
  4. 以上都不是

说明

正确答案是选项“b”。声明 int arr[4][3];,其中“arr”是一个有4行3列的数组,代表C语言中的一个二维数组。该声明表示数组有四个子数组,每个子数组有三个整数元素。因此,它将数据组织成一个类似网格的结构,具有四行三列。这种结构可以有效地访问和操作表格格式的数据。


2. C语言中二维数组的元素是如何存储的?

  1. 按列存储
  2. 对角线顺序
  3. 随机顺序
  4. 按行存储

说明

正确答案是选项“d”。C语言中的二维数组是按行存储的。通过按顺序存储每一行,数组的元素被存储在一个单独的连续内存块中。例如,一个二维数组 int arr[3][3],其元素存储顺序如下:arr[0][0], arr[0][1], arr[0][2], arr[1][0], arr[1][1], arr[1][2], arr[2][0], arr[2][1], arr[2][2]。这种方法确保一行中的每个元素在内存中都彼此靠近,以提高缓存速度和逐行访问效率。按行存储与按列存储不同,后者将一列的所有元素存储在一起。


3. 如何初始化二维字符数组?

  1. char arr[2][2] = {{'a'}, {'b', 'c', 'd'}};
  2. char arr[2][2] = {'a', 'b', 'c', 'd'};
  3. char arr[2][2] = {{'a', 'b'}, {'c', 'd'}};
  4. b 和 c 都是

说明

正确答案是选项“d”。在C语言中,以上三种方法都可以用来初始化二维字符数组。char arr[2][2] = {{'a', 'b'}, {'c', 'd'}}; 使用嵌套括号显式定义每一行的元素。char arr[2][2] = {'a', 'b', 'c', 'd'}; 以扁平的线性方式初始化数组,并将所有元素按行存储。这两种方法都得到相同的最终数组结构,第一行是 'a' 和 'b',第二行是 'c' 和 'd'。


4. 如何声明一个指向二维数组的指针?

  1. int ptr[ ][ ];
  2. int ptr[N][M];
  3. int **ptr;
  4. int (*ptr)[N];

说明

正确答案是选项“d”。可以使用语法 int (*ptr)[N]; 声明一个二维数组,它告诉我们参数 ptr 指向一个包含 N 个数字的数组,其中 N 是数组的列数。这在处理动态分配的二维数组或将二维数组传递给函数时特别有用。


5. 如何找到二维数组 (arr) 的行数?

  1. sizeof(arr) / sizeof(arr[0][0])
  2. sizeof(arr[0]) / sizeof(arr[0][0])
  3. sizeof(arr)
  4. sizeof(arr) / sizeof(arr[0])

说明

正确答案是选项“d”。sizeof(arr) / sizeof(arr[0]) 是C语言中用于确定二维数组 arr 行数的一个表达式。sizeof(arr) 提供数组的总字节大小。sizeof(arr[0]) 提供数组第一行的字节大小。通过将数组的总大小除以单行的大小 (sizeof(arr[0])),就可以找到数组的行数。这是一个简单的方法,利用了这样一个事实:无论数组的维度如何,都可以通过将数组的总大小除以单行的大小来计算可用的行数。


6. 如何确定二维数组 arr 的列数?

  1. sizeof(arr[0]) / sizeof(arr[0][0])
  2. sizeof(arr[0]) / sizeof(arr[0][0])
  3. sizeof(arr) / sizeof(arr[0])
  4. sizeof(arr) / sizeof(arr[0][0])

说明

正确答案是选项“a”。使用公式“sizeof(arr[0]) / sizeof(arr[0][0])”来确定C语言中二维数组 arr 的列数。

函数“sizeof(arr[0])”提供数组第一行的总字节大小。这适用于该行中的所有列。函数“sizeof(arr[0][0])”提供数组中单个元素的大小(以字节为单位)。这有助于确定每个元素的相对大小。

通过将第一行的大小 (sizeof(arr[0])) 除以单个元素的大小 (sizeof(arr[0][0])),可以得到列数。这样,通过将一行的总字节大小除以每个元素的字节大小,就可以计算出给定行中可以容纳多少个这样的元素。