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

下载本文档

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

文档简介

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

2、ruct 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;枚举量Fortran的值为_。A) 4B) 7C)102D) 103 5、以下表达中错误的选项是_。A)可以通过typede

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

4、 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类型的变量D) T是struct S类型的变量9、设有如下说明typedef struct ST lon

5、g 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; float m; aa; td; struct aa td;11、根据下面的定义,能打印出字母M的语句是

6、_。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,1);D) printf(%cn,0);12、设有以下语句:struct st int n; struct st *ne*t; static struct st a3=5,&a1,7,&a2,9,0,*p;p=&a0;则表达式的值是6

7、。A) p+ -nB) p-n+C) (*p).n+D) +p-n13、下面程序的输出结果为这里是设了一个构造体指针变量*p。这个构造体中又嵌套了一个指针变量*y。然后再设了一个普通数数组dt4。然后下一步是给构造体定义的一个变量数组:de4,并且分别给构造体内的成员直接赋值:里面分别赋了四次。 这里是设了一个构造体指针变量*p。这个构造体中又嵌套了一个指针变量*y。然后再设了一个普通数数组dt4。然后下一步是给构造体定义的一个变量数组:de4,并且分别给构造体内的成员直接赋值:里面分别赋了四次。 int *; int *y; *p;int dt4=10,20,30,40;struct st

8、aa4= 50,&dt0,60,&dt1,70,&dt2,80,&dt3 ;这里面是给构造体里的*和*y直接赋值。因为是dt4所以赋了四次。第一次:*对应50;*y对应的是地址de0也就是10.然后这样一次下去。这里面是给构造体里的*和*y直接赋值。因为是dt4所以赋了四次。第一次:*对应50;*y对应的是地址de0也就是10.然后这样一次下去。 p=aa; printf(%dn, +p-* );printf(%dn, (+p)-*); printf(%dn, +( *p-y);A) 10 B) 50 C) 51 D) 6020 60 60 7020 21 21 3114、假设已建立下面的链表

9、构造,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是_。A) s-ne*t=NULL; p=p-ne*t; p-ne*t=s;B) p=p-ne*t; s-ne*t=p-ne*t; p-ne*t=s;C) p=p-ne*t; s-ne*t=p; p-ne*t=s;D) p=(*p).ne*t; (*s).ne*t=(*p).ne*t; (*p).ne*t=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)

10、 0 4 0 10 C)16、下面程序的输出是main() struct cmpl* int *; int y; um2=1,3,2,7;printf(%dn,um0.y /um0.* * um1.*);A) 0 B) 1 C) 3 D) 617、设有如下定义: struct skint a;float b;data,*p; 假设有p=&data;,则对data中的a域的正确引用是_。A) (*p).data.a B)18、有以下程序: *#includeunion pw int i; char ch2; a;main() a.ch0=13; a.ch1=0; printf(%dn,a.i);

11、 程序的输出结果是。注意: ch0在低字节,ch1在高字节。A) 13B) 14 C) 208 D) 20919、字符0的ASCII码为十六进制的30,下面程序的输出是_。main() union unsigned char c;unsigned int i4; z;z.i0=0*39;z.i1=0*36;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=&r;s-i0=0*39

12、;s-i1=0*38;printf(%cn,s-c0) ; A) 39 B)9 C) 38 D) 8填空题1、以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回.请填空:#includestruct list char data; struct list * ne*t; ;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=

13、(struct list *)malloc(sizeof(struct list);p-data=ch;p-ne*t=p;q=p;ch=getchar();p-ne*t=0;return(h);2、有以下说明定义和语句,可用a.day引用构造体成员day, 请写出引用构造体成员a.day的其它两种形式 (*b).day 、b-day 。structint day;char mouth;int year;a,*b; b=&a;datane*theaddatane*tdatadatane*theaddatane*tdatane*tstruct linkchar *data ; struct lin

14、k *ne*t; *head;4、假设有以下说明和定义语句,则变量w在内存中所占的字节数是 40 。union aa float *, y;char c6;struct st union aa v; float w5; double ave; w;/325、设有以下构造类型说明和变量定义,则变量a在内存所占字节数是32_。Struct stud char num6;int s4;double ave; a,*p;6、以下程序用来输出构造体变量e*所占存储单元的字节数,请填空。struct st char name20; double score; ;main() struct st e*; p

15、rintf(e* size: %dn,sizeof( _e*_ );7、以下程序段用于构成一个简单的单向链表,请填空。struct STRU int *, y ;float rate;_struct STRU_* p; a, b;a.*=0; a.y=0; a.rate=0; a.p=&b;b.*=0; b.y=0; b.rate=0; b.p=NULL;8、假设有如下构造体说明:struct STRU int a, b ; char c; double d:struct STRU p1,p2;请填空,以完成对t数组的定义,t数组的每个元素为该构造体类型_struct STRU_ t20;9、

16、假设以下定义和语句,则sizeof(a)的值是 _12_ ,而sizeof(b)的值是 _4_ struct int day; char mouth; int year; a, *b; b=&a; sp ne*t data sp ne*t data root struct list char *sp;_struct list *ne*t_;_int data_;root;11、设有以下定义 struct ss int info; struct ss *link;*,y,z; 且已建立如下列图所示链表构造: _ _ _| | | | | | | | | | -| | -| | |_|_| |_|_| |_|_| * y z请写出删除结点y的赋值语句_ *.link=z;_。12、以下程序的运行结果是 2002Shang*ian# include typedef struct student char name10; long sno; float score; STU;main( ) STU a=zhangsan,2001,95,b=Shang*ian,2002,90,c=Anhua,2003,95,d,*p=&d; d=a; if

温馨提示

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

评论

0/150

提交评论