结构体与联合体习题(含答案)

上传人:第*** 文档编号:33892144 上传时间:2018-02-18 格式:DOC 页数:8 大小:96KB
返回 下载 相关 举报
结构体与联合体习题(含答案)_第1页
第1页 / 共8页
结构体与联合体习题(含答案)_第2页
第2页 / 共8页
结构体与联合体习题(含答案)_第3页
第3页 / 共8页
结构体与联合体习题(含答案)_第4页
第4页 / 共8页
结构体与联合体习题(含答案)_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《结构体与联合体习题(含答案)》由会员分享,可在线阅读,更多相关《结构体与联合体习题(含答案)(8页珍藏版)》请在金锄头文库上搜索。

1、12013 年 结构体与联合体习题选择题1、若程序中有以下的说明和定义:struct abc int x;char y; 花括号后少了分号。struct abc s1,s2;则会发生的情况是_。A) 编译时错 B) 程序将顺序编译、连接、执行C) 能顺序通过编译、连接、但不能执行 D) 能顺序通过编译、但连接出错2、有以下程序段struct st int x; int *y;*pt;int a=1,2;b=3,4;struct st c2=10,a,20,b;pt=c;以下选项中表达式的值为 11 的是A) *pt-y B) pt-x C) +pt-x D) (pt+)-x3、有以下说明和定义

2、语句struct student int age; char num8;struct student stu3=20,200401,21,200402,19,200403;struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是_。A) (p+)-num B) p-num C) (*p).num D) stu3.age4、设有如下枚举类型定义enum language Basic=3,Assembly=6,Ada=100,COBOL,Fortran;枚举量 Fortran 的值为_。A) 4 B) 7 C) 102 D) 103 5、以下叙述中错误的是_。A)可

3、以通过 typedef 增加新的类型B)可以用 typedef 将已存在的类型用一个新的名字来代表C)用 typedef 定义新的类型名后,原有类型名仍有效D)用 typedef 可以为各种类型起别名,但不能为变量起别名6、有以下程序段typedef struct NODE int num; struct NODE *next; OLD;以下叙述中正确的是A)以上的说明形式非法 B) NODE 是一个结构体类型C) OLD 是一个结构体类型 D) OLD 是一个结构体变量7、以下选项中不能正确把 cl 定义成结构体变量的是_。1typedef structint red;int green;i

4、nt blue; COLOR;2COLOR cl;2struct color cl int red;int green;int blue;3struct color int red;int green;int blue;cl;4structint red;int green;int blue;c1;A) 1 B) 2 C) 3 D) 48、设有以下语句typedef struct S int g; char h; T;则下面叙述中正确的是_。A)可用 S 定义结构体变量B)可以用 T 定义结构体变量C) S 是 struct 类型的变量D) T 是 struct S 类型的变量9、设有如下说明

5、typedef struct ST long a;int b;char c2; NEW;则下面叙述中正确的是_。A)以上的说明形式非法B) ST 是一个结构体类型C) NEW 是一个结构体类型D) NEW 是一个结构体变量10、以下对结构体类型变量 td 的定义中,错误的是_。A) typedef struct aa B) struct aa int n; int n;float m; float m;AA; ;AA td; struct aa td;C) struct D) struct int n; int n;float m; float m;aa; td;struct aa td;11

6、、根据下面的定义,能打印出字母 M 的语句 是_。3struct person char name9; int age;struct person class10=John,17, Paul,19,Mary,18, Adam,16;A) printf(%cn,class3.name); B) printf(%cn,class3.name1);C) printf(%cn,class2.name1); D) printf(%cn,class2.name0);12、设有以下语句:struct st int n; struct st *next;static struct st a3=5,p=则表达式

7、 的值是 6。A) p+ -n B) p-n+ C) (*p).n+ D) +p-n13、下面程序的输出结果为struct st int x;int *y; *p;int dt4=10,20,30,40;struct st aa4= 50,main() p=aa;printf(%dn, +p-x );printf(%dn, (+p)-x);printf(%dn, +( *p-y);A) 10 B) 50 C) 51 D) 6020 60 60 7020 21 21 3114、若已建立下面的链表结构,指针 p、s 分别指向图中所示的结点,则不能将 s 所指的结点插入到链表末尾的语句组是_。这里是

8、设了一个结构体指针变量*p。这个结构体中又嵌套了一个指针变量*y。然后再设了一个普通数数组 dt4。然后下一步是给结构体定义的一个变量数组:de4 ,并且分别给结构体内的成员直接赋值:里面分别赋了四次。 这里面是给结构体里的 x 和*y 直接赋值。因为是dt4所以赋了四次。第一次:x 对应 50;*y 对应的是地址 de0也就是 10.然后这样一次下去。4A) s-next=NULL; p=p-next; p-next=s;B) p=p-next; s-next=p-next; p-next=s;C) p=p-next; s-next=p; p-next=s;D) p=(*p).next; (

9、*s).next=(*p).next; (*p).next=s;15、下面程序的输出是main() enum team my,your=4,his,her=his+10;printf(%d %d %d %dn,my,your,his,her);A) 0 1 2 3 B) 0 4 0 10 C) 0 4 5 15 D) 1 4 5 1516、下面程序的输出是main() struct cmplx int x; int y; cnum2=1,3,2,7;printf(%dn,cnum0.y /cnum0.x * cnum1.x);A) 0 B) 1 C) 3 D) 617、设有如下定义: stru

10、ct skint a;float b;data,*p; 若有 p=,则对 data 中的 a 域的正确引用是_。A) (*p).data.a B) (*p).a C) p-data.a D) p.data.a18、有以下程序: *#includeunion pw int i; char ch2; a;main() a.ch0=13; a.ch1=0; printf(%dn,a.i); 程序的输出结果是 。 (注意: ch0在低字节,ch1在高字节。 )A) 13 B) 14 C) 208 D) 20919、已知字符 0 的 ASCII 码为十六进制的 30,下面程序的输出是_。main() u

11、nion unsigned char c;unsigned int i4; z;F NULL E data next head p G s 5z.i0=0x39;z.i1=0x36;printf(%cn,z.c);A) 6 B) 9 C) 0 D) 320、字符0的 ASCII 码的十进制数为 48,且数组的第 0 个元素在低位,则以下程序的输出结果是_。#includemain( ) union int i2; long k; char c4; r,*s=s-i0=0x39;s-i1=0x38;printf(%cn,s-c0) ; A) 39 B) 9 C) 38 D) 8填空题1、以下函数

12、 creat 用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回.请填空:#includestruct list char data; struct list * next; ;struct list * creat() struct list * h,* p,* q;char ch;h=(struct list *) malloc(sizeof(struct list);p=q=h;ch=getchar();while(ch!=?) p= (struct list *)malloc(sizeof(struct list);p-data=ch;p-n

13、ext=p;q=p;ch=getchar();p-next=0;return(h); 2、有以下说明定义和语句,可用 a.day 引用结构体成员 day, 请写出引用结构体成员 a.day 的其它两种形式 (*b).day 、 b-day 。structint day;char mouth;int year;a,*b; b=3、现有如图所示的存储结构,每个结点含两个域,data 是指向字符串的指针域,next 是指向data nexthead data nextdata next 6结点的指针域。请填空完成此结构的类型定义和说明。struct linkchar *data ; struct link *next ; *head;4、若有以下说明和定义语句,则变量 w 在内存中所占的字节数是 40 。union aa fl

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号