C语言编程基础:字符数组与结构体解析

需积分: 4 1 下载量 14 浏览量 更新于2024-07-29 收藏 250KB DOC 举报
"c语言复习题,用于大一新生复习,包括了单选题,涉及C语言中的数组、字符串、指针、结构体等基础知识。" C语言是一种基础且强大的编程语言,对于初学者来说,理解和掌握其核心概念至关重要。在这些复习题目中,我们可以看到几个关键知识点: 1. 数组的定义与比较: - 数组x是一个字符数组,存储了一个字符串"abcdefg",而数组y是一个字符数组,包含单独的字符。在C语言中,字符串以空字符'\0'结束,因此x的长度为8(包括结束符),而y的长度为7。所以选项C是正确的。 2. 字符数组的大小: - 定义的数组array包含了字符串"chinr",由于字符串末尾隐含一个'\0',所以数组array的长度为7个字节,因此答案是D)7个字节。 3. 合法的数组定义: - A) 不正确,因为字符串常量应该用char类型数组接收。 - B) 正确,初始化了一个包含5个元素的整型数组,并给出了所有元素的值。 - C) 不正确,应该用char类型数组来接收字符串常量。 - D) 正确,定义了一个字符数组并给出了初始值。所以,正确答案是BD。 4. 对于字符数组和整型数组的操作: - 描述A、B、C都是正确的,只有D不正确,因为虽然不能直接使用赋值运算符"="对字符型数组进行整体赋值,但可以通过库函数如`strcpy()`进行字符串的复制。 5. 字符串长度和数组大小: - 在这个程序中,字符串`s`包含了一个换行符`\n`、数字`123`和一个反斜杠`\`,所以其长度是6(不包括结束的空字符)。而`sizeof(s)`会返回整个字符数组的大小,包括结束的空字符,所以大小是7字节。答案是B)6,7。 6. 输入数据: - 要使`a`中存放字符串"1234",`b`中存放字符'5',应按照指定格式输入,即输入数据的形式应该是`a=1234<空格>b=5`。 7. `typedef`的使用: - `typedef struct S {int g; char h;} T;`定义了一个新的类型名T,它代表了包含一个int和一个char的结构体。因此,选项B是正确的,可以用T定义结构体变量。 8. 指针和类型定义: - `typedef int *INTEGER`定义了INTEGER为指向int的指针类型。因此,`p`是基类型为int的指针变量,选项B正确;`q`也是基类型为int的指针变量,选项C正确。而选项D说可以用INTEGER代替int类型名,这是不正确的,因为INTEGER是一个指针类型,不是基本类型。 9. 变量a的内存占用: - 这取决于结构体A的大小。结构体A中有一个int型成员c,占用4字节,然后是一个联合体U,它包含了三种可能的数据类型,但它们共用同一块内存区域,所以只占用最大类型(long)的大小,即8字节。但由于结构体的对齐规则,通常结构体会在成员大小的整数倍基础上增加一些额外字节。在这个问题中,没有具体说明对齐规则,所以无法确定确切的字节数。 10. 结构体指针: - 要使指针`p`指向结构体`data`中的成员`n`,正确赋值语句是`p = &data.n;`。 通过解答这些问题,我们可以回顾C语言的基础知识,包括数组、字符串、指针、结构体和联合体的用法以及类型定义。这对于巩固C语言基础非常有帮助。