📜  C数组测试3

📅  最后修改于: 2020-10-23 01:55:03             🧑  作者: Mango

C阵列测试3

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

#include
int main()
{
    int size, j;
    scanf("%d", &size);
    int arr[size];
    for(j=1; j<=size; j++)
    {
        scanf("%d", arr[j]);
        printf("%d", arr[j]);
    }
    return 0;
}
  1. 该代码是错误的,因为正在通过循环扫描数组的值。
  2. 该代码是错误的,因为声明数组的语句无效。
  3. 该代码是错误的,因为在for循环中使用的数组的下标在1到size的范围内。
  4. 该代码正确并成功运行。

正确的选项是(b)。

说明:

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

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

12)表达式&arr和arr对于15个整数的数组是否有所不同?

  1. Yes
  2. No

正确的选项是(a)。

说明:

是的,两者的意思不同。 ‘arr’提供第一个int的地址,而’&arr’提供int数组的地址。

因此,对于由15个整数组成的数组,表达式’&arr’和’arr’是不同的。

13)以下声明有什么区别?

int fun (int arr[5]);
int fun(int arr[]);
  1. Yes
  2. No

正确的选项是(b)。

说明:

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

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

#include
int main()
{
    int arr[2]={20};
    printf("%d\n", 0[arr]);
    return 0;
}
  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开头,程序的输出是什么?

#include
int main()
{
    int arr[] = {10, 11, 12, 15, 23};
    printf("%u, %u\n", arr, &arr);
    return 0;
}
  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