若有以下定义语句: struct student { int num; char name[9]; }stu[2]={1, "zhangsan",2, "lisi"}; 则以下能输出字符串“lisi”的语句是( )。 A printf("%s",stu[0].name); B printf("%s",stu[1].name[0]); C printf("%s",stu[1].name); D printf("%s",&stu[2].name[0]);
时间: 2024-03-14 14:49:10 浏览: 88
答案是 C printf("%s",stu[1].name);。在定义语句中,`stu`是一个有两个元素的数组,每个元素都是一个 `struct student` 结构体类型,包括一个 `int` 类型的 `num` 和一个长度为 9 的字符数组 `name`。因此,`stu[1].name` 就是第二个元素的 `name` 字符数组,即字符串 "lisi"。选项 A 中的 `stu[0].name` 是第一个元素的 `name` 字符数组,即字符串 "zhangsan";选项 B 中的 `stu[1].name[0]` 是第二个元素的 `name` 字符数组的第一个字符,即字符 'l';选项 D 中的 `&stu[2].name[0]` 越界了,因为 `stu` 数组只有两个元素,而 `&stu[2]` 是第三个元素的地址。
相关问题
有以下的结构变量定义语句: struct student { int num; char name[9]; } stu; 则下列叙述中错误的是( )。 A.结构类型名为student B.结构类型名为stu C.num是结构成员名 D.struct是C的关键字
选项 B 是错误的。
原因:
- 选项 A 正确,结构类型名为 student。
- 选项 C 正确,num 是结构成员名。
- 选项 D 正确,struct 是 C 的关键字,用于定义结构体类型。
在结构体变量定义语句中,变量名应该放在类型名后面,因此选项 B 是错误的。正确的结构体变量定义应该是:
```c
struct student {
int num;
char name[9];
} stu;
```
其中,类型名为 student,变量名为 stu。
若有以下定义语句: struct student { int num; char name[9]; } stu[2]={1, "zhangsan",2, "lisi"}; 则以下能输出字符串“zhangsan”的语句是( )。 A printf("%s",stu[0].name); B printf("%s",stu[1].name[0]); C printf("%s",stu[1].name); D printf("%s",&stu[2].name[0]);
正确的输出字符串“zhangsan”的语句是 A. `printf("%s",stu[0].name);`
因为 `stu[0].name` 表示结构体数组中第一个元素的 `name` 字符数组,其存储的是字符串 "zhangsan",可以直接使用 `%s` 格式符输出。而其他选项输出的内容均不是字符串 "zhangsan"。
选项 B 中,`stu[1].name[0]` 表示结构体数组中第二个元素的 `name` 字符数组的第一个字符,不是一个完整的字符串。
选项 C 中,`stu[1].name` 表示结构体数组中第二个元素的 `name` 字符数组,存储的是字符串 "lisi"。
选项 D 中,`&stu[2].name[0]` 表示结构体数组中第三个元素的 `name` 字符数组的第一个字符的地址,不是一个完整的字符串。而且题目中定义的结构体数组只有两个元素,不存在 `stu[2]`。
阅读全文