结构体和联合体例题Word下载.docx
- 文档编号:22358243
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:16
- 大小:24.23KB
结构体和联合体例题Word下载.docx
《结构体和联合体例题Word下载.docx》由会员分享,可在线阅读,更多相关《结构体和联合体例题Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
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);
程序运行后的输出结果是()。
(2005.9)
A)20045537B)20044550C)20042580D)20041703
例11-6.有以下程序:
string.h>
typedefstruct
charname[9];
charsex;
floatscore[2];
}STU;
STUf(STUa)
STUb={"
Zhao"
'
m'
85.0,90.0};
inti;
strcpy(a.name,b.name);
a.sex=b.sex;
for(i=0;
i<
2;
i++)
a.score[i]=b.score[i];
returna;
STUc={"
Qian"
f'
95.0,92.0},d;
d=f(c);
%s,%d,%2.0f,%2.0f\n"
d.name,d.sex,d.Score[0],d.score[1]);
程序的运行结果是()。
(2007.9)
A)Qian,f,95,92B)Qian,m,85,90C)Zhao,m,85,90D)Zhao,f,95,92
例11-7.以下程序运行后的输出结果是()。
2005.9
srtructSTU
charname[10];
voidf(char*name,intnum)
structSTUs[2]={{"
SunDan"
20044},{"
PengHua"
20045}};
num=s[0].num;
strcpy(name,s[0].name);
YanhSan"
20041},{"
LiSiGuo"
20042}},*p;
p=&
s[1];
f(p->
name,p->
num);
%s%d\n"
p->
A)SunDan20042√B)SunDan20044C)LiSiGuo20042D)YangSan20041
例11-8.以下程序运行后的输出结果是()。
typedefstruct{intb,p;
}A;
voidf(Ac)//注意:
c是结构体变量名
{intj;
c.b=1;
c.p=2;
{inti;
Aa={1,2};
f(a);
%d,%d\n"
a.b,a.p);
A)2,3B)2,4C)1,4D)1,2√
例11-9.以下程序运行后的输出结果是()。
structS{intn;
inta[20];
voidf(structS*p)
{inti,j,t;
p->
n-1;
for(j=i+1;
j<
n;
j++)
if(p->
a[i]>
a[j])
{t=p->
a[i];
p->
a[i]=p->
a[j];
a[j]=t;
}
{inti;
structSs={10,{2,3,1,6,8,7,5,4,10,9}};
f(&
s);
s.n;
printf("
%d"
s.a[i]);
A)1,2,3,4,5,6,7,8,9,10,√B)10,9,8,7,6,5,4,3,2,1,
C)2,3,1,6,8,7,5,4,10,9,D)10,9,8,7,6,1,2,3,4,5,
例11-10.以下结构体说明和变量定义如图所示。
structnode
}*p,*q,*r;
现要将q所指节点从链表中删除,同时要保持链表的结构,以下不能完成指定存在的语句是()。
A)p->
next=q->
next;
B)p->
next=p->
next->
C)p->
next=r;
D)p=q->
next;
√
例11-11.以下程序运行后的输出结果是()。
#defineNULL0
structNODE
{intnum;
structNODE*next;
{structNODEs[3]={{1,NULL},{2,NULL},{3,NULL}},*p,*q,*r;
intsum=0;
s[0].next=s+1;
s[1].next=s+2;
s[2].next=s;
p=s;
q=p->
r=q->
sum+=q->
next->
num;
sum+=r->
%d\n"
sum);
答案:
5
例11-12.以下程序运行后的输出结果是()。
structtt
{intx;
structtt*y;
}*p;
structtta[4]={20,a+1,15,a+2,30,a+3,17,a};
p=a;
for(i=1;
=2;
{
%d,"
x);
p=p->
y;
}
A)20,30B)30,17C)15,30D)20,15√
例11-13.若有以下说明和定义:
uniondt
{inta;
charb;
doublec;
}data;
以下叙述中错误的是()。
(2005.4)
A)data的每个成员起始地址都相同
B)变量data所占的内存字节数与成员c所占字节数相等
C)程序段:
data.a=5;
printf(“%f\n”,data.c);
输出结果为5.000000
D)data可以作为函数的实参
例11-14.设有以下定义:
uniondata
{intd1;
floatd2;
}demo;
下面叙述中错误的是()。
A)变量demo与成员d2所占的内存字节数相同
B)变量demo中各成员的地址相同
C)变量demo和个成员的地址相同
D)若给demo.d1赋99后,demo.d2中的值是99.0√
例11-14.在说明一个结构体变量时相同分配给它的存储空间是()。
A)该结构体中第一个成员所需的存储空间
B)该结构体中最后一个成员所需的存储空间
C)该结构体中占用最大存储空间的成员所需的存储空间
D)该结构体中所有成员所需存储空间的总和
例11-15在说明一个共用体变量时相同分配给它的存储空间是()。
A)该共用体中第一个成员所需的存储空间
B)该共用体中最后一个成员所需的存储空间
C)该共用体中占用最大存储空间的成员所需的存储空间
D)该共用体中所有成员所需存储空间的总和
例11-16以下关于typedif的叙述不正确的是()。
A)用typedef可以定义各种类型名,但不能用来定义变量
B)用typedef可以增加新类型√
C)用typedef只是将已存在的类型用一个新的名字来代表
D)使用typedef语句不能创建新的类型,只是给定义的类型取一个新名字。
例11-17以下关于枚举的叙述不正确的是()。
A)枚举变量只能取对应枚举类型的枚举元素表中的元素
B)可以在定义枚举类型时对枚举元素进行初始化
C)枚举元素表中的元素有先后次序,可以进行比较
D)枚举元素的值可以是数字或字符串√
例11-18正确的k值是()。
enum{a,b=5,c,d=4,e}k;
k=e;
A)3B)4C)5D)6
例11-19正确的k值是()。
k=a;
A)0B)4C)1D)6
例11-20以下对结构体变量stu1中成员age的非法引用是()。
structstudent
{intage;
}stu1,*p;
p=&
stu1;
A)stu1.ageB)student.ageC)p->
ageD)(*p).age
例11-21有以下定义:
structdate
{intyear,month,day;
structwoklist
{charname[20];
structdatebirthday;
}person;
对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是()。
A)year=1988;
B)birthday.year=1988;
C)person.birthday.year=1988;
D)person.year=1988;
例11-22若有以下说明和语句,则表达式()的值为101。
structwe
int*b;
intx0[]={11,12},x1[]={31,32};
staticstructwex[2]={100,x0,300,x1};
p=x;
A)*p->
bB)p->
aC)++p->
aD)(p++)->
a
例11-23设有以下说明,则下面不正确的叙述是()。
uniondata
charc;
floatf;
}a;
A)a所占的内存长度等于成员f的长度
B)a的地址和它的成员地址都是同一地址
C)a可以作为函数参数
D)不能对a赋值,但可以在定义a时对它初始化
解共用体不能作为函数参数(但共用体变量指针可以作为函数参数),所以本体答案C。
二、填空题:
例11-24下列程序的运行结果是。
structs
intn;
int*m;
intd[5]={30,10,40,20,50};
structsarr[5]={300,&
d[0],100,&
d[1],400,&
d[2],200,&
d[3],500,&
d[4]};
{p=arr;
++p->
n);
(++p)->
++(*p->
m));
答案:
301,100,11
例11-25以下程序的运行结果是。
typedefunion
longi;
intk[5];
}DATE;
intcat;
DATEcow;
doubledog;
}too;
DATEmax;
sizeof(structdate)+sizeof(max));
答案52(VC++)
例11-26以下程序的运行结果是。
structst
intx;
int*y;
ints[]={10,20,30,40};
structsta[]={1,&
s[0],2,&
s[1],3,&
s[2],4,&
s[3]};
*(++p)->
y);
++(*(++p)->
y));
1,2,30,41
例11-27;
有以下定义:
struct
}tab[2]={{1,"
ab"
},{2,"
cd"
}},*p=tab;
则表达式*p->
y的结果是;
表达式*(++p)->
y的结果是.
‘a’,‘c’
例11-28有如下定义:
inty;
}s[2]={{1,2},{3,4}},*p=s;
则表达式++p->
x的结果是;
表达式(++p)->
x的结果是。
答案23
例11-29以下函数creat()用来建立一个带头节点的单链表,新产生的节点总是插在链表的末尾,单链表的头指针为函数值返回。
请填空。
#include<
structlist
chardata;
structlist*next;
structlistcreat()
structlist*h,*p,*q;
charch;
h=①malloc(sizeof(②));
/*建立头节点*/
p=q=h;
/*p,q指向头节点*/
while(ch!
='
?
'
)/*输入非‘?
‘循环*/
p=③malloc(sizeof(④));
/*建立要插入的节点*/
q->
data=ch;
next=p;
/*将节点*p插在*q之后*/
q=p;
/**q始终指向新健链表的最后节点*/
ch=getchar();
p->
next='
\0'
;
/*将最后节点next域置空*/
⑤;
/*返回头节点指针*/
答案:
①(structlist*);
②structlist③(structlist*)
④structlist⑤return(h)
例11-30以下min()函数的功能是:
查找带有头结点的单链表中节点数据域的最小值作为函数值返回。
structnode
intmin(structnode*fist)
structnode*p;
intm;
p=first->
m=p->
data;
for(p=p->
p!
p=①;
if(②)m=p->
returnm;
①p->
next②p->
data<
m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 联合体 例题