📜  C数组测试2

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

C阵列测试2

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

#include
main(){    
   int x[] = {100, 200, 300};   
   printf("%d", *x +1);
}
  1. 100
  2. 200
  3. 101
  4. 201

正确的选项是(c)。

说明:

在程序中* x表示100,并在* x上加1得到101。

因此,输出为101。

7)在下面的语句中,“ arr”表示什么?

char *arr[20];
  1. arr是20个字符的数组
  2. arr是20个字符指针的数组
  3. arr是一个函数数组
  4. arr是指向数组的指针

正确的选项是(b)。

说明:

方括号表示声明时的数组,类型为char *。因此它是一个字符指针数组。

因此,“ arr”是20个字符指针的数组。

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

#include
void main()
{
   char a[] = "C++";
   printf("%s ",a);
   a++;
   printf("%s",a);
}
  1. C++ ++
  2. ++ ++
  3. C++ C++
  4. Compile error

正确的选项是(d)。

说明:

在程序中,“ a”指的是常量地址,常量地址变量不允许递增。

因此,程序将在输出中生成编译错误。

9)关于程序中使用的5条语句中,哪条是正确的?

 
int num[5];
num[5]=20;
  1. 在第一个语句5中指定一个数组大小,而在第二个语句中它指定一个数组的特定元素。
  2. 在第一个语句中5指定一个特定的元素,而在第二个语句中它指定一个数组的大小。
  3. 在第一个语句5中指定一个特定的元素,而在第二个语句中它指定一个类型。
  4. 在这两个语句中,5指定了数组大小。

正确的选项是(a)。

说明:

语句int num [5];指定数组的大小,并且num [5] = 20;指定数组的特定元素(第6个元素)。

因此,在第一个语句5中指定了数组大小,而在第二个元素中则指定了数组的特定元素。

10)以下哪个使用数组名称的语句不产生基址?

  1. 当数组名称是运算符的操作数时
  2. 将数组名称传递给scanf()函数
  3. 将数组名称传递给printf()函数
  4. 当数组名与sizeof运算符。
  1. 1 4
  2. 4
  3. 1
  4. 1 3

正确的选项是(a)。

说明:

语句1和4不会产生数组的基地址。而printf()和scanf()产生数组的基地址。