结构体和共用体习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题六

1. 从下列四个选项中选择一个正确的填入括号中。

(1)在说明一个结构体变量时系统分配给它的存储空间是(D)。

A该结构体中第一个成员所需存储空间

B该结构体中最后一个成员所需存储空间

C该结构体中占用最大存储空间的成员所需存储空间

D该结构体中所有成员所需存储空间的总和

(2)在说明一个共用体变量时系统分配给它的存储空间是(D )。

A该共用体中第一个成员所需存储空间

B该共用体中最后一个成员所需存储空间

C该共用体中占用最大存储空间的成员所需存储空间

D该共用体中所有成员所需存储空间的总和

(3)共用体类型在任何给定时刻, (B)。

A所有成员一直驻留在内存中

B只有一个成员驻留在内存中

C部分成员驻留在内存中

D没有成员驻留在内存中

(4)以下定义结构体类型的变量st1,其中不正确的是(A )

A typedef stuct student

{

int num;

int age;

}STD;

STD st1;

B struct student

{

int num,age;

}st1;

C struct

{

int num;

float age;

}st1;

D struct student

{

int num;

int age;

};

struct student st1;

(5)已知职工记录描述为:

struct workers

{

int no;

char name[20];

char sex;

struct

{

int day;

int month;

int year;

}birth;

};

struct workers w;

设变量w中的”生日”应是”1993年10月25日”,下列对”生日”的正确赋值方式是(C)。

A day=25; month=10; year=1993;

B w.day=25w.month=10; w.year=1993;

C w.birth.day=25; w.birth.month=10; w.birth.year=1993;

D birth.day=25; birth.month=10; birth.year=1993;

(6)设有如下定义:

struct sk

{

int a;

float b;

}data,*p;

若有p=&data;则对data中的a成员的正确引用是(B)。

A (*p).data.a

B (*p).a

C p->data.a

D p.data.a

2.填空

(1)若有以下说明和定义且数组w和变量k已正确赋值,则对w数组中第k个元素中各成员的正确引用形式是w[k-1].b、w[k-1].c 、w[k-1].d 。

struct aa

{

int b;

char c;

double d;

};

struct aa w[10];

int k=3;

(2)若有以下说明和定义,则对x.b成员的另外两种引用形式是x->b-> 和p.b. 。

struct st

{

int a;

struct st *b;

}*p, x;

p=&x;

3.阅读下面程序,写出运行结果。

(1)98765432,ffffffcc

#include

main( )

{

struct byte

{

int x;

char y;

};

union

{

int i[2];

long j;

char m[2];

struct byte d;

}r,*s=&r;s->j=0x98765432;

printf("%x,%x\n",s->d.x,s->d.y);

}

(2)结果:1,minicomputer

#include

struct tree

{

int x;

char *s;

}t;

func(struct tree t )

{

t.x=10;

t.s="computer";

return(0);

}

main()

{

t.x=1;

t.s="minicomputer";

func(t);

printf("%d,%s\n",t.x,t.s);

}

#include ..................................................结果:.0, struct tree

{

int x;

char *s;

}t;

func(struct tree t )

{

t.x=10;

t.s="computer";

return(0);

}

main()

{

//t.x=1;

//t.s="minicomputer";

func(t);

printf("%d,%s\n",t.x,t.s);

}

(3)结果:34,12

#include

main()

{

union

{

char s[2];

int i;

}a;

a.i=0x1234;

printf("%x,%x\n",a.s[0],a.s[1]);

}

(4)结果:1,2,30

#include

struct st

{

int x;

int *y;

}*p;

int s[]={10,20,30,40};

struct st a[]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]};

main()

{

相关文档
最新文档