C 结构、联合、枚举 测试 4

2025 年 3 月 28 日 | 阅读 2 分钟

16) 找出以下程序中的错误?

  1. 错误:结构声明中的错误
  2. 链接器
  3. 没有错误
  4. 以上都不是

正确选项是 (c)。

说明

这种声明称为自引用结构。这种声明允许在程序中使用。

这里 *e 是指向 **struct employ** 的指针。

因此,编译器将返回 **程序中无错误**


17) 位字段不能用于联合体。

  1. true
  2. False

正确选项是 (b)。

说明

错误,位字段允许在联合体内部使用。

下面是一个在联合体中使用位字段的 C 程序


18) 联合体的元素可以有不同的尺寸。

  1. true
  2. False

正确选项是 (a)。

说明

正确,联合体的元素可以有不同的尺寸。

所有联合体元素可以有不同的尺寸,但它们共享公共的内存空间。


19) 如果使用以下结构使用 fwrite() 写入文件,fread() 能成功读回吗?

  1. 是的
  2. 不能

正确选项是 (b)。

说明

否,因为程序中的结构包含一个 **char** 指针,在使用 **fwrite()** 将结构写入磁盘时,只会写入指针 **'n'** 中存储的数据。因此 **fread()** 无法读取指针中存储的数据。

因此,**fread()** 无法成功读回。


20) 在 Turbo C 中的 DOS(16 位平台)上,程序的输出是什么?

  1. 9
  2. 4
  3. 2
  4. 1

正确选项是 (c)。

说明

由于 C 语言是与机器或编译器相关的语言。在 Turbo C (DOS) 中,integer 数据类型的尺寸是 2。

因此,语句 **printf("%d \n", sizeof(bit));** 在输出中打印值 2。