资源描述:
《结构体和共用体习题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、习题六1.从下列四个选项中选择一个正确的填入括号中。(1)在说明一个结构体变量时系统分配给它的存储空间是(D)。A该结构体中第一个成员所需存储空间B该结构体中最后一个成员所需存储空间C该结构体中占用最大存储空间的成员所需存储空间D该结构体中所有成员所需存储空间的总和(2)在说明一个共用体变量时系统分配给它的存储空间是(D)。A该共用体中第一个成员所需存储空间B该共用体中最后一个成员所需存储空间C该共用体中占用最大存储空间的成员所需存储空间D该共用体中所有成员所需存储空间的总和(3)共用体类型在任何给定时刻,(B)。A所有成员一直驻留在内存中B只有一个成员驻留
2、在内存中C部分成员驻留在内存中D没有成员驻留在内存中(4)以下定义结构体类型的变量st1,其中不正确的是(A)Atypedefstuctstudent{intnum;intage;}STD;STDst1;Bstructstudent{intnum,age;}st1;Cstruct{intnum;floatage;}st1;Dstructstudent{intnum;intage;};structstudentst1;(5)已知职工记录描述为:structworkers{intno;charname[20];charsex;struct{intday;intm
3、onth;intyear;}birth;};structworkersw;设变量w中的”生日”应是”1993年10月25日”,下列对”生日”的正确赋值方式是(C)。Aday=25;month=10;year=1993;Bw.day=25w.month=10;w.year=1993;Cw.birth.day=25;w.birth.month=10;w.birth.year=1993;Dbirth.day=25;birth.month=10;birth.year=1993;(6)设有如下定义:structsk{inta;floatb;}data,*p;若有p=&
4、data;则对data中的a成员的正确引用是(B)。A(*p).data.aB(*p).aCp->data.aDp.data.a2.填空(1)若有以下说明和定义且数组w和变量k已正确赋值,则对w数组中第k个元素中各成员的正确引用形式是w[k-1].b、w[k-1].c、w[k-1].d。structaa{intb;charc;doubled;};structaaw[10];intk=3;(2)若有以下说明和定义,则对x.b成员的另外两种引用形式是x->b->和p.b.。structst{inta;structst*b;}*p,x;p=&x;3.阅读下面程序,
5、写出运行结果。(1)98765432,ffffffcc#includemain(){structbyte{intx;chary;};union{inti[2];longj;charm[2];structbyted;}r,*s=&r;s->j=0x98765432;printf("%x,%x",s->d.x,s->d.y);}(2)结果:1,minicomputer#includestructtree{intx;char*s;}t;func(structtreet){t.x=10;t.s="computer";retur
6、n(0);}main(){t.x=1;t.s="minicomputer";func(t);printf("%d,%s",t.x,t.s);}#include..................................................结果:.0,structtree{intx;char*s;}t;func(structtreet){t.x=10;t.s="computer";return(0);}main(){//t.x=1;//t.s="minicomputer";func(t);printf("%
7、d,%s",t.x,t.s);}(3)结果:34,12#includemain(){union{chars[2];inti;}a;a.i=0x1234;printf("%x,%x",a.s[0],a.s[1]);}(4)结果:1,2,30#includestructst{intx;int*y;}*p;ints[]={10,20,30,40};structsta[]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]};main(){p=a;printf("%d,",p->x);printf("%d,"
8、,(++p)->x);printf("%d,",*(