结构体与联合体

上传人:工**** 文档编号:491425276 上传时间:2024-01-26 格式:DOCX 页数:7 大小:48.05KB
返回 下载 相关 举报
结构体与联合体_第1页
第1页 / 共7页
结构体与联合体_第2页
第2页 / 共7页
结构体与联合体_第3页
第3页 / 共7页
结构体与联合体_第4页
第4页 / 共7页
结构体与联合体_第5页
第5页 / 共7页
点击查看更多>>
资源描述

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

1、第八章结构体与联合体选择题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 c=10,a,20,b;pt=c;以下选项中表达式的值为11的是A) *pt-yB) pt-xC) +pt-xD) (pt+)-x3、有以下说明和定义语句struct student int

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

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

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

5、har c2; NEW;则下面叙述中正确的。A) 以上的说明形式非法B) ST是一个结构体类型C) NEW是一个结构体类型D) NEW是一个结构体变量10、 以下对结构体类型变量td的定义中,错误的是。A) typedef struct aaB) struct aa(int n;( int n;float m;float m;AA;AA td;struct aatd;C) structD) struct( int n;( int n;float m;float m;aa;td;struct aa td;11、 根据下面的定义,能打印出字母M的语句是。struct person char nam

6、e9; int age;struct person class10=John”,17, ”Paul”,19,”Mary”,18, Adam”,16;A) printf(%cn”,class3.name);C) printf(%cn,class 2.name1);B) printf(%cn”,class3.name1);D) printf(%cn,class 2.name0);12、设有以下语句:struct st int n; struct st *next;static struct st a3=5,&a1,7,&a2,9,0,*p;p=&a0;则表达式 的值是6。A) p+ -n B) p

7、-n+ C) (*p).n+ D) +p-n13、下面程序的输出结果为struct st 一一这里是设了一个结构体指针变量*p。这个结构体中又嵌 int x;套了一个指针变量*y。然后再设了一个普通数数组dt4。然后下一步是给结构int *y;体定义的一个变量数组:de4,并且分别给结构体内的(成员直接赋值:里面分别赋了四次。 *?* 二一一一一/int dt4=10,20,30,40;struct st aa4= 50,&dt0,60,&dt1,70,&dt2,80,&dt3 ;这里面是给结构体里的x和*尸直接赋值。因为是 dt4所以赋了四次。第一次:x对应50;*y对应的是地址de0也就是

8、10.然后这样一次下去。main()这里面是给结构体里的x和*尸直接赋值。因为是printf(%dn, +p-xprintf(%dn, (+p)-x);dt4所以赋了四次。第一次:x对应50;*y对应的是地址de0也就是10.然后这样一次下去p=aa;printf(%dn, +p-xprintf(%dn, (+p)-x);printf(%dn, +( *p-y);A) 10B) 50C) 51D) 60202060216021703114、若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插 入到链表末尾的语句组。A) s-next=NULL; p=p-next;

9、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; (*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

10、x; int y; cnum2=1,3,2,7;printf(%dn”,cnum0.y /cnum0.x * cnum1.x);A) 0B) 1C) 3D) 617、设有如下定义:struct skint a;float b;data,*p;若有p=&data;,则对data中的a域的正确引用是。A) (*p).data.a B) (*p).aC) 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); 程序的输出结果是。(注意:ch

11、0在低字节,ch1 在高字节。)A) 13B) 14C) 208D) 20919、 已知字符0的ASCII码为十六进制的30,下面程序的输出 main() union unsigned char c;unsigned int i4; z;z.i0=0x39;z.i1=0x36;printf(%cn”,z.c);A) 6B) 9C) 0D) 320、字符0的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是#include main()( union int i2;s-i0=0x39;s-i1=0x38;printf(%cn”,s-c0)A) 39long k; ch

12、ar c4;B) 9C) 38r,*s=&r;D) 8填空题1、以下函数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 *)mall

13、oc(sizeof(struct list);p-data=ch;p-next=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=&a;3、现有如图所示的存储结构,每个结点含两个域,data是指向字符串的指针域,next是指向结 点的指针域。请填空完成此结构的类型定义和说明。headstruct link. char *data ; struct link *next; *head;4、若有以下说明和定义语句,则变量w在内存中所占的字节数是40union aa float x, y;char c6;struct st union aa v; float w5; double ave; w; /325、设有以下结构类型说明和变量定义,则变量a在内存所占字节数是32。Struct stud charnum6;ints4;double ave; a,*p;6、以下程序用来输出结构体变量ex所占存储单元的字节

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

当前位置:首页 > 学术论文 > 其它学术论文

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