1、结构体、共用体和用户定义类型及答案解析(总分:12.00,做题时间:90 分钟)一、B选择题/B(总题数:8,分数:8.00)1.以下程序的输出结果是_。 main() union char i2;int k; r; r.i0=2;r.i1=0; printf(“%d/n“r.k); (分数:1.00)A.2B.1C.0D.不确定2.有以下结构体说明和变量的定义,且如图 14-4 所示的指针 p 指向变量 a,指针 q 指向变量 b。则不能把结点 b 连接到结点 a 之后的语句是_。 (分数:1.00)A.next=q;B.next= main () struct abc s2=1,2,3,4
2、,5,6; int t;t=s0a+s1.b; printf(“%d/n“,t); (分数:1.00)A.5B.6C.7D.87.若要说明一个类型名 CHARP,使得定义语句“CHARP s;”等价于“char *s;”,以下选项中正确的是_。(分数:1.00)A.typedef CHARP char*s;B.typedef * char CHARP;C.typedef CHARP *char:D.typedef char*CHARP;8.以下叙述错误的是_。(分数:1.00)A.共用体的所有变量都有一个相同的地址B.结构体变量可以作为共有用体中的成员C.共用体的成员一个时刻只有一个生效D.要
3、传递共用体的成员通常采用函数二、B填空题/B(总题数:2,分数:4.00)9.有以下定义和语句,则 sizeof(a)的值是_,而 sizeof(a.share)的值是_。 struct dateint day; int month; int year; union int share 1; float share2; share; a;(分数:2.00)填空项 1:_10.以下函数 creat 用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回。请填空。 #include stdio.h struct list char dara; struct
4、list *next; ; struct list *creat() struct list *h,*p,*q; char ch; h= (struct list (*) malloc (sizeof (struct list); _; ch=getchar(); while(ch!=?) p=(struct list*) malloc) sizeof (struct list); p-data=ch; _; q=p; ch=getchar(); p-next=/0; _: (分数:2.00)填空项 1:_结构体、共用体和用户定义类型答案解析(总分:12.00,做题时间:90 分钟)一、B选择
5、题/B(总题数:8,分数:8.00)1.以下程序的输出结果是_。 main() union char i2;int k; r; r.i0=2;r.i1=0; printf(“%d/n“r.k); (分数:1.00)A.2 B.1C.0D.不确定解析:2.有以下结构体说明和变量的定义,且如图 14-4 所示的指针 p 指向变量 a,指针 q 指向变量 b。则不能把结点 b 连接到结点 a 之后的语句是_。 (分数:1.00)A.next=q;B.next= main () struct abc s2=1,2,3,4,5,6; int t;t=s0a+s1.b; printf(“%d/n“,t);
6、 (分数:1.00)A.5B.6 C.7D.8解析:7.若要说明一个类型名 CHARP,使得定义语句“CHARP s;”等价于“char *s;”,以下选项中正确的是_。(分数:1.00)A.typedef CHARP char*s;B.typedef * char CHARP;C.typedef CHARP *char:D.typedef char*CHARP; 解析:8.以下叙述错误的是_。(分数:1.00)A.共用体的所有变量都有一个相同的地址B.结构体变量可以作为共有用体中的成员C.共用体的成员一个时刻只有一个生效 D.要传递共用体的成员通常采用函数解析:二、B填空题/B(总题数:2,
7、分数:4.00)9.有以下定义和语句,则 sizeof(a)的值是_,而 sizeof(a.share)的值是_。 struct dateint day; int month; int year; union int share 1; float share2; share; a;(分数:2.00)填空项 1:_ (正确答案:10,4)解析:10.以下函数 creat 用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回。请填空。 #include stdio.h struct list char dara; struct list *next; ; struct list *creat() struct list *h,*p,*q; char ch; h= (struct list (*) malloc (sizeof (struct list); _; ch=getchar(); while(ch!=?) p=(struct list*) malloc) sizeof (struct list); p-data=ch; _; q=p; ch=getchar(); p-next=/0; _: (分数:2.00)填空项 1:_ (正确答案:p=q=h,q-next=p,return(h)或 return h)解析: