第10章 结构与链表Word格式文档下载.docx
- 文档编号:21657133
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:10
- 大小:19.17KB
第10章 结构与链表Word格式文档下载.docx
《第10章 结构与链表Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第10章 结构与链表Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
{inti;
charch;
doublef;
}b;
则结构变量b占用内存的字节数是()
A)1B)2C)8D)11
7.以下关于共用体的叙述正确的是()
A)一个共用体变量中可同时存放所有成员的数据
B)一个共用体变量中不可同时存放所有成员的数据
C)可直接对共用体变量进行赋值操作
D)共用体不能嵌套定义
8.下列程序的输出结果是()
enumweek{sun=7,mon,tue,wed,thu,fri,sat}day=wed;
main()
{printf(“%d”,day);
}
A)2B)3C)7D)10
9.下面对typedef的叙述中不正确的是()
A)用typedef可以定义各种类型名,但不能用来定义变量
B)用typedef可以增加新类型
C)用typedef只是将已存在的类型用一个新的标识符来代表
D)使用typedef有利于程序的通用和移植
10.以下程序的运行结果是()
#include"
stdio.h"
{structdate
{intyear,month,day;
}today;
printf("
%d\n"
sizeof(structdate));
A)6B)8C)10D)12
11.设有以下说明,则下面不正确的叙述是()
uniondata
{inti;
charc;
floatf;
}a;
A.a所占的内存长度等于成员f的长度
B.a的地址和它的各成员地址都是同一地址
C.a可以作为函数参数
D.不能对a赋值,也不可以在定义a时对它初始化
12.已知学生记录描述为
structstudent
{intno;
charname[20];
charsex;
struct
{intyear;
intmonth;
intday;
}birth;
structstudents;
设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是()
A)year=1984;
month=11;
day=11;
B)birth.year=1984;
birth.month=11;
birth.day=11;
C)s.year=1984;
s.month=11;
s.day=11;
D)s.birth.year=1984;
s.birth.month=11;
s.birth.day=11;
13.变量a所占内存字节数是()
unionU
{charst[4];
inti;
longl;
};
structA
{intc;
unionUu;
A)4B)5C)6D)8
14.有以下结构体说明和变量的定义,指针p指向变量a,指针q指向变量b。
则不能把结点b连接到结点a之后的语句是()
structnode
{chardata;
structnode*next;
}a,b,*p=&
a,*q=&
b;
A)a.next=q;
B)p.next=&
C)p->
next=&
D)(*p).next=q;
15.下列程序的输出结果是()
structabc
{inta,b,c;
{structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].a+s[1].b;
%d\n"
t);
A)5B)6C)7D)8
16.设有如下定义:
strucksk
}data;
int*p;
若要使P指向data中的a域,正确的赋值语句是()
A)p=&
a;
B)p=data.a;
C)p=&
data.a;
D)*p=data.a;
17.根据下面的定义,能打印出字母M的语句是()
structperson{charname[9];
intage;
structpersonclass[10]={"
John"
17,
"
Paul"
19,
Mary"
18,
adam"
16
A)printf("
%c\n"
class[3].name);
B)printf("
class[3].name[1]);
C)printf("
class[2].name[1]);
D)printf("
class[2].name[0]);
18.有以下程序
#include“stdio.h”
structNODE
{intnum;
structNODE*next;
{structNODE*p,*Q,*R;
p=(structNODE*)malloc(sizeof(structNODE));
q=(structNODE*)malloc(sizeof(structNODE));
r=(structNODE*)malloc(sizeof(structNODE));
p->
num=10;
q->
num=20;
r->
num=30;
next=q;
q->
next=r;
printf(“%d\n”,p->
num+q->
next->
num);
程序运行后的输出结果是()
A)10B)20C)30D)40
19.设有如下定义
structss
{charname[10];
}std[3],*p=std;
下面各输入语句中错误的是()
A)scanf("
%d"
&
(*p).age);
B)scanf("
%s"
std.name);
C)scanf("
%c"
std[0].sex)D)scanf("
(p->
sex));
20.有以下程序
main()
{union{unsignedintn;
unsignedcharc;
}u1;
ul.c='
A'
;
u1.n);
}
执行后输出结果是()
A)产生语法错B)随机值C)AD)65
21.设有如下说明
typedefstruct
{intn;
doublex;
}STD;
则以下选项中,能正确定义结构体数组并赋初值的语句是()
A)STDtt[2]={{1,'
62},{2,'
B'
75}};
B)STDtt[2]={1,"
A"
62},{2,"
B"
C)structtt[2]={{1,'
},{2,'
}};
D)structtt[2]={{1,"
62.5},{2,"
75.0}};
22.有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。
structnode
{intdata;
structnode*next;
}*p,*q,*r;
_______________________________
|datanextdatanextdatanext|
|→□□→□□→□□→|
| ↑p↑q↑r|
|_______________________________|
现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是()
A)r->
next=r->
next;
B)q->
D)q->
r->
23.有以下程序
structs
{intx,y;
}data[2]={10,100,20,200};
{structs*p=data;
++(p->
x));
程序运行后的输出结果是()
A)10B)11C)20D)21
24.若以下定义:
structlink
structlink*next;
}a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构:
ab
datanextdatanext
┌──┬──┐┌──┬──┐
│5│-+─→│9│\0│
└──┴──┘└──┴──┘
↑p
c
datanext
┌──┬──┐
│7││
└──┴──┘
↑q
指针p指向变量a,q指向变量c。
则能够把c插入到a和b之间并形成新的链表的语句组是:
()
A)a.next=c;
c.next=b;
B)p.next=q;
q.next=p.next;
c;
next=p->
(*q).next=&
25.以下程序的输出是()
structst
{intx;
int*y;
}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&
dt[0],60,&
dt[0],};
{p=aa;
printf("
A)10B)11C)51D)60
26.设有以下说明语句
structex
{intx;
floaty;
charz;
}example;
则下面的叙述中不正确的是()
A)struct结构体类型的关键字B)example是结构体类型名
C)x,y,z都是结构体成员名D)structex是结构体类型
27.设有以下说明语句
typedefstruct
charch[8];
}PER;
则下面叙述中正确的是()
A)PER是结构体变量名B)PER是结构体类型名
C)typedefstruct是结构体类型D)struct是结构体类型名
28.若有下面的说明和定义:
structtest
{intml;
charm2;
floatm3;
unionuu{charul[5];
intu2[2];
}ua;
}myaa;
则sizeof(structtest)的值是()
A)12B)16C)14D)9
29.以下程序的输出结果是()
unionmyun
{struct
{intx,y,z;
}u;
intk;
}a;
{a.u.x=4;
a.u.y=5;
a.u.z=6;
a.k=0;
printf(“%d\n"
a.u.x);
A)4B)5C)6D)0
30.以下程序的输出结果是()
structHAR
{intx,y;
structHAR*p;
}h[2];
{h[0].x=1;
h[0].y=2;
h[1].x=3;
h[1].y=4;
h[0].p=&
h[1];
h[1].p=h;
%d%d\n"
(h[0].p)->
x,(h[1].p)->
y);
A)12B)23C)14D)32
二.填空题
1.已有定义如下:
}*p;
以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。
请填空。
p=(structnode*)malloc();
2.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是()。
Structstud
{charnum[6];
ints[4];
doubleave;
}a,*p;
3.以下程序段用于构成一个简单的单向链表,请填空。
structSTRU
{intx,y;
floatrate;
()p;
}a,b;
a.x=0;
a.y=0;
a.rate=0;
a.p=&
b.x=0;
b.y=0;
b.rate=0;
b.p=NULL;
4.写出下面程序运行的结果()
structs
{intx,*y;
intdata[]={10,20,30,40,50};
array[5]={100,&
data[0],200,&
data[1],300,&
data[2],400,&
data[3],
500,&
data[4]};
{p=array;
%d\t"
++p->
x);
(++p)->
++(*p->
y));
*p->
5.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。
{charname[20];
doublescore;
{structstex;
exsize:
%d\n"
sizeof());
6.下面程序的运行结果是:
()。
typedefunionstudent
longsno;
floatscore[4];
}STU;
{STUa[5];
printf(“%d\n”,sizeof(a));
7.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;
成员变量link是指向自身结构体的指针.请将定义补充完整。
{intinfo;
()link;
8.下面程序的运行结果是:
()
unionun{inta;
{a.a=256;
a.c=’b’;
printf(“%d”,a.a);
9.#include"
#defineM10
structmode
{floatdata;
structmode*next;
{structmode*base,*p;
inti,n=0;
floatr=0,a[M];
Pleaseinput10numbers:
\n"
);
for(i=0;
i<
M;
i++)
{scanf("
%f"
a[i]);
r+=a[i];
r/=M;
if(a[i]>
r)
{n++;
a[n]=a[i];
base=NULL;
for(i=n;
i>
0;
i--)
{p=(structmode*)malloc(sizeof(structmode));
data=a[i];
next=base;
base=p;
}
average=%6.2f\n"
r);
do{printf("
%6.2f"
p->
data);
p=p->
while(p!
='
\0'
执行程序时输入:
12.523.609.81088.25.119.26.82.8
执行程序时输出:
()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第10章 结构与链表 10 结构
![提示](https://static.bdocx.com/images/bang_tan.gif)