14结构体共用体和用户定义类型修订版.docx

上传人:b****8 文档编号:28132847 上传时间:2023-07-08 格式:DOCX 页数:11 大小:174.31KB
下载 相关 举报
14结构体共用体和用户定义类型修订版.docx_第1页
第1页 / 共11页
14结构体共用体和用户定义类型修订版.docx_第2页
第2页 / 共11页
14结构体共用体和用户定义类型修订版.docx_第3页
第3页 / 共11页
14结构体共用体和用户定义类型修订版.docx_第4页
第4页 / 共11页
14结构体共用体和用户定义类型修订版.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

14结构体共用体和用户定义类型修订版.docx

《14结构体共用体和用户定义类型修订版.docx》由会员分享,可在线阅读,更多相关《14结构体共用体和用户定义类型修订版.docx(11页珍藏版)》请在冰豆网上搜索。

14结构体共用体和用户定义类型修订版.docx

14结构体共用体和用户定义类型修订版

第十四章结构体、共用体和用户定义类型

考点82结构体变量的定义和初始化

一、结构体

结构体是一种由多个成员组成的集合。

定义一个结构体的格式:

struct结构体名

{

类型名1结构成员名表1;

类型名2结构成员名表2;

}

例如:

structstu

{longnumber;

charname[20];

charsex;

intage;

floatscore[3];

};

二、结构型变量的定义和初始化

方法1:

先定义结构型、后定义变量

structstu

{longnumber;

charname[20];

charsex;

floatscore[3];

};

structstux,y;

structstux={L,”zhao1”,’f’,{89,94,86}},

y={L,”zhao2”,’m’,{78,86,92}};

numbernamesexscore[1][2][3]

变量xLzhao1f899486

变量yLzhao1f899486

方法2:

定义结构型的同时定义变量

structstu

{longnumber;

charname[20];

charsex;

floatscore[3];

}x={L,”zhao1”,’f’,{89,94,86}},

y={L,”zhao2”,’m’,{78,86,92}};

方法3:

定义无名称的结构型的同时定义变量

struct

{longnumber;

charname[20];

charsex;

intage;

floatscore[3];

}x={L,”zhao1”,’f’,{89,94,86}},

y={L,”zhao2”,’m’,{78,86,92}};

07418)设有说明

structDATE{intyear;intmonth;intday;};

请写出一条定义语句,该语句定义d为上述结构体类型变量,并同时为其成员year、month、day依次赋初值2006、10、1:

【19】。

05448)以下对结构体类型变量td的定义中,错误的是

A)typedefstructaa

{intn;

floatm;

}AA;

AAtd;

B)structaa

{intn;

floatm;

}td;

structaatd;

C)struct

{intn;

floatm;

}aa;

structaatd;

D)struct

{intn;

floatm;

}td;

考点83结构体数组和指针

数组中的每个元素都是结构体

05948)有以下程序

structSTU

{charname[10];intnum;floatTotalScore;};

voidf(structSTU*p)

{structSTUs[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;

++p;++q;*p=*q;

}

main()

{structSTUs[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};

f(s);

printf("%s%d%3.0f\n",s[1].name,s[1].num,s[1].TotalScore);

}

程序运行后的输出结果是

A)SunDan20044550B)Penghua20045537

C)LiSiGuo20042580D)SunDan20041703

05417)以下程序运行后的输出结果是【17】。

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!

=q)

{p->k=++i;p++;

q->k=i++;q--;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}

考点84结构体变量的引用

三种形式:

1.结构体变量名.成员名

2.(*结构体指针变量名).成员名

3.结构体指针变量名—>成员名

06426)有以下程序段

structst

{intx;int*y;}*pt;

inta[]={1,2},b[]={3,4};

structstc[2]={10,a,20,b};

pt=c;

以下选项中表达式的值为11的是

A)*pb->yB)pb->xC)++pt->xD)(pt++)->x

考点85结构体与函数

向函数传递结构体变量:

函数体内对形参结构体变量中的任何成员操作,都不会影响对应实参中成员的值。

07433)有以下程序

typedefstruct{intb,p;}A;

voidf(Ac)/*注意:

c是结构变量名*/

{intj;

c.b+=1;c.p+=2;

}

main()

{inti;

Aa={1,2};

f(a);

printf("%d,%d\n",a.b,a.p);

}

程序运行后的输出结果是

A)2,3B)2,4C)1,4D)1,2

05946)有以下程序

#include

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{20044,550},{20045,537}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d%3.0f\n",s[0].num,s[0].TotalScore);

}

程序运行后的输出结果是

A)20045537B)20044550C)20042580D)20041703

考点86用户定义类型的定义方法和应用

typedef类型名标识符;可以用标识符代替类型名

07447)有以下程序段

typedefstructnode{intdata;structnode*next;}*NODE;

NODEp;

以下叙述中正确的是

A)p是指向structnode结构变量的指针的指针B)NODEp;语句出错

C)p是指向structnode结构变量的指针D)p是structnode结构变量

考点87链表结点的访问

链表是一种动态存储结构,链表中的每一个元素称为结点,每个结点由数据域和指针域构成。

06916

06416

考点88改变结点的位置

069

A)首结点成为尾结点B)尾结点成为首结点C)删除首结点D)删除尾结点

06425)

A)q->next=r->next;p->next=r;r->next=q;B)p->next=r;q->next=r->next;r->next=q;

C)q->next=r->next;r->next=q;p->next=r;D)r->next=q;p->next=r;q->next=r->next;

考点89从链表中删除结点

054

A)p->next=q->next;B)p->next=p->next->next;C)p->next=r;D)p=q->next;

考点90共用体类型数据的定义和初始化

定义共用体的格式:

union共用体标识名

{类型名1共用体成员名1;

类型名2共用体成员名2;

}变量名;

对共用体变量赋值要针对其成员进行,不能整体赋值。

编译程序将按照共用体变量中最大的成员长度分配一块内存。

06946)若有以下定义和语句

uniondata

{inti;charc;floatf;}x;

inty;

则以下语句正确的是

A)x=10.5;B)x.c=101;C)y=x;D)printf("%d\n",x);

05438)若有以下说明和定义

uniondt

{inta;charb;doublec;}data;

以下叙述中错误的是

A)data的每个成员起始地址都相同

B)变量data所占内存字节数与成员c所占字节数相等

C)程序段:

data.a=5;printf("%f\n",data.c);输出结果为5.

D)data可以作为函数的实参

考点91共用体类型数据的引用

同结构体

06441)有以下程序

main()

{union

{charch[2];

intd;

}s;

s.d=0x4321;

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

}

在16位编译系统上,程序执行后的输出结果是

A)21,43B)43,21C)43,00D)21,00

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1