当前位置:文档之家› 结构体与联合体习题含答案

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

2013年结构体与联合体习题选择题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[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是A) *pt->y B) pt->x C) ++pt->x D)(pt++)->x3、有以下说明和定义语句struct student{ int age; char num[8];};struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是______。

A) (p++)->num B) p->num C) (*p).num D) stu[3].age4、设有如下枚举类型定义enum language {Basic=3,Assembly=6,Ada=100,COBOL,Fortran};枚举量Fortran的值为______。

A) 4 B) 7 C) 102 D) 1035、以下叙述中错误的是_________。

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定义成结构体变量的是______。

1.typedef struct{int red;int green;int blue;} COLOR;COLOR cl;2.struct 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) 1 B) 2C) 3 D) 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;char c[2];} 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、根据下面的定义,能打印出字母M的语句是_____。

struct person { char name[9]; int age;};struct person class[10]={"John",17, "Paul",19,"Mary",18, "Adam",16};A) printf("%c\n",class[3].name); B)printf("%c\n",class[3].name[1]);C) printf("%c\n",class[2].name[1]); D)printf("%c\n",class[2].name[0]);12、设有以下语句:struct st {int n; struct st *next;};static struct st a[3]={5,&a[1],7,&a[2],9,'\0'},*p;p=&a[0];则表达式的值是6。

A) p++ ->n B) p->n++ C) (*p).n++ D) ++p->n13、下面程序的输出结果为} *p;int dt[4]={10,20,30,40};main(){ p=aa;printf("%d\n", ++( *p->y));}A) 10 B) 50 C) 51 D) 6020 60 60 7020 21 21 31 14、若已建立下面的链表结构,指针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).next=(*p).next; (*p).next=s;15、下面程序的输出是main(){ enum team {my,your=4,his,her=his+10};printf("%d %d %d %d\n",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; } cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y /cnum[0].x * cnum[1].x);}A) 0 B) 1 C) 3 D) 617、设有如下定义:struct sk{int 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 ch[2]; } a;main(){ a.ch[0]=13; a.ch[1]=0; printf("%d\n",a.i); }程序的输出结果是。

(注意: ch[0]在低字节,ch[1]在高字节。

)A) 13 B) 14 C) 208 D) 20919、已知字符0的ASCII码为十六进制的30,下面程序的输出是___________。

main(){ union { unsigned char c;unsigned int i[4];} z;z.i[0]=0x39;z.i[1]=0x36;printf("%c\n",z.c);}A) 6 B) 9 C) 0 D) 320、字符'0'的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是_____________。

#include<stdio.h>main( ){ union { int i[2]; long k; char c[4]; }r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf("%c\n",s->c[0]) ; }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 list));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 。

struct{int day;char mouth;int year;}a,*b; b=&a;3、现有如图所示的存储结构,每个结点含两个域,data是指向字符串的指针hea域,next是指向结点的指针域。

请填空完成此结构的类型定义和说明。

struct link{ char *data ; struct link *next;} *head;4、若有以下说明和定义语句,则变量w在内存中所占的字节数是40。

union aa{ float x, y;char c[6];};struct st { union aa v; float w[5]; double ave; } w;//325、设有以下结构类型说明和变量定义,则变量a在内存所占字节数是32__ 。

相关主题