第十三章单元测试
以下程序运行后的输出结果是____。
#include<stdio.h>
struct s
{
int x;
int y;
} data[2] = {10, 100, 20, 200};
int main()
{
struct s *p = data + 1;
printf("%d", p->x);
return 0;
}
有如下定义:
struct Student{
char name[10];
int age;
char gender;
}std[3], *p=std;
则以下各输入语句中错误的是:
有如下定义:struct date { int year; int month; int day; };struct { char name[20]; char sex; struct date birthday; }person;下面正确的赋值语句是()。
共用体变量在程序执行期间()。
设有以下定义:struct sk{int a;float b;}data;int *p;若要使p指向data中的a域,正确的赋值语句是()。
对于结构体变量的引用,下列叙述正确的是()。
以下叙述错误的是()。
在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()。
链表不具有的特点是()。
“结构体名”和“结构体成员名”都是用户定义的标识符。
每个“结构体成员列表”项中都可以含有多个同类型的成员名,它们之间以分号分隔。
共用体变量所占内存长度是各成员所占内存长度之和。
若有以下说明和语句:struct student { int no; char *name; }stu, *p=&stu; 则以下引用方式正确的是()。
设有说明语句:struct s { int a; float b; }type;则下面正确的叙述是()。
A:10 B:21 C:20 D:11
答案:20
A:scanf("%s",&std.name); B:scanf("%c",&std[0].gender); C:scanf("%c",&(p->gender)); D:scanf("%d",&(*p).age);
A:
person.year=1980;
B:person.birthday.year=1980;
C:birthday.year=1980 ;
D:year=1980 ;
A:
部分成员一直驻留在内存中
B:所有成员一直驻留在内存中
C:没有成员一直驻留在内存中
D:只有一个成员一直驻留在内存中
A:
p=&a;
B:p=&data.a;
C:*p=data.a;
D:p=data.a;
A:
如果成员本身就是一个结构体,只能对最低级的成员进行赋值等引用和运算。
B:对结构体成员可以进行各种运算,其中“.”优先级最低。
C:两个同一类型的结构体变量之间不能整体赋值。
D:只能引用结构体变量成员的地址,不能引用结构体变量的地址。
A:
可以通过typedef增加新的类型
B:可以用typedef将已存在的类型用一个新的名字代表
C:用typedef定义新类型后,原有类型名仍有效
D:用typedef可以为各种类型起别名,但不能为变量起别名
A:
q->next=p->next; p=q;
B:p->next=q->next; q->next=p;
C:q->next=p->next; p->next=q;
D:p->next=q->next; p->next=q;
A:
可随机访问任一元素
B:所需空间与线性长度成正比
C:不必事先估计存储空间
D:插入、删除不需要移动元素
A:错 B:对
A:对 B:错
A:错 B:对
A:
(*p).no
B:stu->no
C:p->no
D:stu.no
A:
struct是结构体类型的关键字
B:a和b都是结构体成员名
C:type是用户定义的结构体类型名
D:struct s是用户定义的结构体类型