C 数组测试 3

5 Sept 2024 | 2 分钟阅读

11) 以下关于下面程序的陈述,哪些是正确的?

  1. 代码是错误的,因为数组的值是通过循环扫描得到的。
  2. 代码是错误的,因为声明数组的语句是无效的。
  3. 代码是错误的,因为在 for 循环中使用的数组的下标范围是 1 到 size。
  4. 代码是正确的,并且成功运行。

正确选项是 (b)。

说明

在程序中,语句 int arr[size]; 会产生一个错误,因为我们不能动态地初始化数组的大小。初始化数组大小需要常量表达式。例如:int arr[20];

因此,代码是错误的,因为声明数组的语句是无效的。

12) 对于一个包含 15 个整数的数组,表达式 &arr 和 arr 是否不同?

  1. 是的
  2. 不能

正确选项是 (a)。

说明

是的,两者表示的含义不同。'arr' 提供第一个 int 的地址,而 '&arr' 提供整个整数数组的地址。

因此,对于一个包含 15 个整数的数组,表达式 '&arr' 和 'arr' 是不同的。

13) 下列两个声明有区别吗?

  1. 是的
  2. 不能

正确选项是 (b)。

说明

不,两个声明是相同的。它是一个函数 fun() 的原型,该函数接受一个整型数组作为参数,并返回一个整型值。

14) 以下程序的输出是什么?

  1. 2
  2. 0
  3. 20
  4. 16

正确选项是 (c)。

说明

步骤 1: int arr[2]={20}; 变量 arr[2] 被声明为一个大小为 '3' 的整型数组,并且其第一个元素被初始化为值 '20'(表示 arr[0]=20)。

步骤 2: printf("%d\n", 0[arr]); 这会打印变量 'arr' 的第一个元素值。

因此,程序的输出是 20。

15) 如果数组的起始地址是 65486,程序的输出将是什么?

  1. 65486, 65486
  2. 65486, 65490
  3. 65486, 65487
  4. 65486, 65488

正确选项是 (a)。

说明

步骤 1: int arr[] = {10, 11, 12, 15, 23}; 变量 'arr' 被声明为一个整型数组并进行了初始化。

步骤 2: printf("%u, %u\n", arr, &arr); 在这里,数组的基地址是 65486。

因此,arr 和 &arr 都指向数组 arr 的基地址。

因此,程序的输出是 65486, 65486