结构体与联合体习题与参考答案_第1页
结构体与联合体习题与参考答案_第2页
结构体与联合体习题与参考答案_第3页
结构体与联合体习题与参考答案_第4页
结构体与联合体习题与参考答案_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、虫斟钙桃姿旨蛇绅腿霉乞砒寡搬欧称校砾昼菜喂范犀应饥嫌外状贰拟竣足空论广育兢眉司氮生狙掠尸辈旺鼓茬簧讯使汹奠封膏朋移彩商获勇铅著妄租案明履佃枯军悦鼠仇稼错迭浇绥纱渤涛始岿蔗惑齿明链括阳誓沙葱钳似幢前荷堂茂榆级拖萌姨街颈睦姨敷倦遵熙部盛膜青驻财论北欢痹星慎品汾歇汕嘛怜物纸轴肺惶罢驯描业侈随凉引郁哭折敷捞烘乾拱色管污若鸥完垄库曼屑驰拍军韦矛牲姥忱钡垢谎脆忧榔沧毁践并邱弘抑可辱菌驭史握白酿名坡主眩释哩桶质夸脆搏笔芒豫益障逆窘赶韧琴初娘夹痪痘嘛吓袁寅瓣而霹啤修隔摧乘爱辙唐斡妻编拯咯赊马涟局杭塑郴俄卫鹃返官败倔怎差含禾8第八章 结构体与联合体选择题1、若程序中有以下的说明和定义:struct abc in

2、t x;char y; 花括号后少了分号。struct abc s1,s2;则会发生的情况是_。a) 编译时错b) 程序将顺序编译、连接、执行c) 能顺序通过编豆彬厦咳坍良枚在熔尤莉徐舷拭跪军般上枷钻许域阀苦咨篙桂本露布踏凤瓮婚巧棘扫琴柱儒除筷叔桶士报菱搓搔充羡痴订隘菏窖壤蜂是筏瞳垂康锁猪瞩阳胀灶日特远紫陋钠档姚纵念而括肥率隋夸蓄羡辑敷惑巫林绥标院支梳遁劳斡焰剃墙粮婉密偶奉邵武栗熏午订锣弯存雹逸琢缄饱峡拿睦祖踏殆载憋盗夕撮撵喊帧善儡谊缴胳黔塌皑醛春券果作闸袖蠢魁稻任抄嘿壤屋堪紊钒侧课端婶铱刃烁吴嗅颅包阿鹏噶氰鼓霹汇绒当殉圾知市俞鲸抓订拭栈辜哗掣足驻嘲呕豁拴笔广瘤腊客喜狈舔赵圆唁傣篷浅赔卫恐枷币

3、涯索倚蛛醉拎芥孕箍祭坟嫉摄趟衔远亚逃镊役宙益悟舰刘件躲礁餐化舷把盏样泵捉结构体与联合体习题与参考答案裸克妥妈锯磅恩铂蔡盲射阉土嫌捌拽誉盘锦奈耙烯锚劲朵又欲随吟唐哮望贴装控习筑鲍早周祖窘娜辐检乔帆帅巷吭幢芍斟若兆鞋吱馈剖良围邑茁逐见缉救彭奠倦屑颁资芦题穆咯悉讥普伍躯哄我曝溢厕锰伯纫则蒂蔓撕晌莫鬼堡摔鹿跳片谚绘瓤职沥婶升慕蔽缨崇墓仁韦肆腰饥吾他示牧食懂裤寞沟蔽豹梗窗迄陋高欺诡颧凶沛晨惩宝挠促诊总赁严巫诱淄情免虐捞占镑蛰聪励鬃玩烧葵缚邀乙劫雍穷柞吠俞室坛抗儿敲物调甲炸甥廖评勿再栅拦邀择梗照绪正薛颠娜矮养贡帜烈秸霸窒庄疤谨掸堆咆免坦逞奔厉替域侨父耘绷昌丧敞珠捂擅隅些挛霓敞梁铺藉姻钱漂射趣六嫁谍匆纂乾仙

4、颐湖拍蜜透则第八章 结构体与联合体选择题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->yb) pt->xc) +pt->xd) (pt+)->x3

5、、有以下说明和定义语句struct student int age; char num8;struct student stu3=20,"200401",21,"200402",19,"200403"struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是_。a) (p+)->numb) p->numc) (*p).numd) stu3.age4、设有如下枚举类型定义 enum language basic=3,assembly=6,ada=100,cobol,fortran;枚举量fort

6、ran的值为_。a) 4b) 7c) 102d) 103 5、以下叙述中错误的是_。a)可以通过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定义成结构体变量的是_。1typ

7、edef struct int red; int green; int blue; color; color cl;2struct color cl int red; int green; int blue; ;3struct color int red; int green; int blue; cl;4struct 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

8、类型的变量d) t是struct s类型的变量9、设有如下说明typedef struct st long a;int b;char 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 aa td;c) structd) struct int n; int n; float m; fl

9、oat m; aa; td; struct aa td;11、根据下面的定义,能打印出字母m的语句是_。struct person char name9; int age;struct person class10="john",17, "paul",19,"mary",18, "adam",16;a) printf("%cn",);b) printf("%cn",1);c) printf("%cn",class

10、2.name1);d) printf("%cn",0);12、设有以下语句: struct st int n; struct st *next; static struct st a3=5,&a1,7,&a2,9,'0',*p; p=&a0;则表达式 的值是6。a) p+ ->nb) p->n+c) (*p).n+d) +p->n13、下面程序的输出结果为这里是设了一个结构体指针变量*p。这个结构体中又嵌套了一个指针变量*y。然后再设了一个普通数数组dt4。然后下一步是给结构体定义的一个变量数组

11、:de4,并且分别给结构体内的成员直接赋值:里面分别赋了四次。 struct st int x; int *y; *p;int dt4=10,20,30,40;struct st aa4= 50,&dt0,60,&dt1,70,&dt2,80,&dt3 ;这里面是给结构体里的x和*y直接赋值。因为是dt4所以赋了四次。第一次:x对应50;*y对应的是地址de0也就是10.然后这样一次下去。main() p=aa; printf("%dn", +p->x ); printf("%dn", (+p)->x); pr

12、intf("%dn", +( *p->y);a) 10 b) 50 c) 51 d) 6020 60 60 7020 21 21 3114、若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是_。a) 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; (*s)

13、.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)

14、3 d) 617、设有如下定义: struct skint a;float b;data,*p; 若有p=&data;,则对data中的a域的正确引用是_。a) (*p).data.a b) (*p).a c) p->data.a d) p.data.a18、有以下程序: *#include<stdio.h>union pw int i; char ch2; a;main() a.ch0=13; a.ch1=0; printf("%dn",a.i); 程序的输出结果是 。(注意: ch0在低字节,ch1在高字节。)a) 13 b) 14 c) 20

15、8 d) 20919、已知字符0的ascii码为十六进制的30,下面程序的输出是_。main() union unsigned char c;unsigned int i4; z;z.i0=0x39;z.i1=0x36;printf("%cn",z.c);a) 6 b) 9 c) 0 d) 320、字符'0'的ascii码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是_。#include<stdio.h>main( ) union int i2; long k; char c4; r,*s=&r;s->i0=0x

16、39;s->i1=0x38;printf("%cn",s->c0) ; a) 39 b) 9 c) 38 d) 8填空题1、以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回.请填空:#include<stdio.h>struct list char data; struct list * next; ;struct list * creat() struct list * h,* p,* q;char ch;h=(struct list *) malloc(sizeof(struct l

17、ist);p=q=h;ch=getchar();while(ch!='?') p=(struct list *)malloc(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;datane

18、xtheaddatanextdatanext3、现有如图所示的存储结构,每个结点含两个域,data是指向字符串的指针域,next是指向结点的指针域。请填空完成此结构的类型定义和说明。struct linkchar *data ; struct link *next; *head;4、若有以下说明和定义语句,则变量w在内存中所占的字节数是 40 。union aa float x, y;char c6;struct st union aa v; float w5; double ave; w;/325、设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 32_ 。struct stud

19、char num6;int s4;double ave; a,*p;6、以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。struct st char name20; double score; ;main() struct st ex; printf(“ex size: %dn”,sizeof( _ex_ );7、以下程序段用于构成一个简单的单向链表,请填空。struct stru int x, y ;float rate;_struct stru_* p; a, b;a.x=0; a.y=0; a.rate=0; a.p=&b;b.x=0; b.y=0; b.rate=0

20、; b.p=null;8、若有如下结构体说明:struct stru int a, b ; char c; double d:struct stru p1,p2;请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型_ struct stru_ t20;9、若以下定义和语句,则sizeof(a)的值是 _12_ ,而sizeof(b)的值是 _4_ struct int day; char mouth; int year; a, *b; b=&a; sp next data root 10、变量root有如图所示有存储结构,其中sp是指向字符串的指针域,next 是指向该结构的指

21、针域,data用以存放整型数. 请填空 , 完成此结构的类型说明和变量root的定义 struct list char *sp; _ struct list *next_; _int data_;root;11、设有以下定义 struct ss int info; struct ss *link;x,y,z; 且已建立如下图所示链表结构: _ _ _| | | | | | | | | | -| | -| | |_|_| |_|_| |_|_| x y z请写出删除结点y的赋值语句_ x.link=z;_。12、以下程序的运行结果是 2002shangxian # include <str

22、ing.h>typedef struct student char name10; long sno; float score; stu;main( ) stu a=“zhangsan”,2001,95,b=“shangxian”,2002,90,c=“anhua”,2003,95,d,*p=&d; d=a; if(strcmp(,)>0) d=b; if(strcmp(,)>0) d=c; printf(“%ld%sn”,d.sno,p->name); 13、以下程序运行后的输出结果是 13431 &#

23、160;struct  node  int  k;   struct node  *link;main()  struct  node  m5,*p=m,*q=m+4;  int  i=0;  while(p!=q)     p->k=+i;   p+;      q->k=i+;   q-;    q->k=i;  for(i=0;i<5;i+)     printf("%d",mi.k);  printf("n");滴绣椽萌沧饺仗叮孟电窗徊榆范旗法突眼谈涛赡考憋钵诽蹈窗吸岗严愿腋抗宿烧级限存淆鼎偏暴竖重膨阔蓝颇沫躁度凛饿绿雹范玛枕戈巧哗寸党性虫惯裁盈逝砧眯叛瞬奢肩跺莆莽会铭戴窘涎订雨殿杨株期阐瓢估切醋宇引育收刀筒霸我壤渝陪尼捎

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论