第11章 结构体.docx

上传人:b****3 文档编号:5427031 上传时间:2022-12-16 格式:DOCX 页数:21 大小:25.72KB
下载 相关 举报
第11章 结构体.docx_第1页
第1页 / 共21页
第11章 结构体.docx_第2页
第2页 / 共21页
第11章 结构体.docx_第3页
第3页 / 共21页
第11章 结构体.docx_第4页
第4页 / 共21页
第11章 结构体.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

第11章 结构体.docx

《第11章 结构体.docx》由会员分享,可在线阅读,更多相关《第11章 结构体.docx(21页珍藏版)》请在冰豆网上搜索。

第11章 结构体.docx

第11章结构体

单项选择题

1101.当说明一个结构体变量时系统分配给它的内存是( )。

A.各成员所需内存量的总和

B.结构中第一个成员所需内存量

C.成员中占内存量最大者所需的容量

D.结构中最后一个成员所需内存量

1002.设有以下说明语句

structuu

{intn;

charch[8];

}PER;

则下面叙述中正确的是( )。

A.uu是结构体标识名

B.PER是结构体标识名

C.structuu是结构体标识名

D.struct是结构体标识名

1003.已知有如下定义:

structa{charx;doubley;}data,*t;

若有t=&data,则对data中的成员的正确引用是( )。

A.(*t).x

B.(*t).data.x

C.t->data.x

D.t.data.x

1004.设有如下定义:

structsk

{inta;

floatb;

}data;

int*p;

若要使P指向data中的b域,正确的赋值语句是( )。

A.p=&data.b;

B.p=&b;

C.p=data.b;

D.*p=data.b;

1005.已知学生记录描述为:

structstudent

{intno;

charname[20],sex;

struct

{intyear,month,day;

}birth;

};

structstudents;

设变量s中的“生日”是“1984年11月12日”,对“birth”正确赋值的程序段是( )。

A.s.birth.year=1984;s.birth.month=11;s.birth.day=12;

B.birth.year=1984;birth.month=11;birth.day=12;

C.s.year=1984;s.month=11;s.day=12;

D.year=1984;month=11;day=12;

1006.有如下定义

structperson{charname[9];intage;};

structpersonclass[10]={"John",17,"paul",19,"Mary",18,"Adam",16,};

根据上述定义,能输出字母M的语句是( )。

A.printf("%c\n",class[3].name[1]);

B.printf("%c\n",class[3].name); 

C.printf("%c\n",class[2].name[1]);

D.printf("%c\n",class[2].name[0]);

1007.若程序中有以下的说明和定义:

structabc

{intx;chary;}

structabcs1,s2;

则会发生的情况是( )。

A.编译出错

B.程序将顺序编译、连接、执行

C.能顺序通过编译、连接、但不能执行

D.能顺序通过编译、但连接出错

1008.有以下程序段

structst

{intx;int*y;}*pt;

inta[]={1,2};b[]={3,4};

structstc[2]={10,a,20,b};

pt=c;

以下选项中表达式的值为11的是( )。

A.++pt->x

B.*pt->y

C.pt->x

D.(pt++)->x

1009.有以下说明和定义语句

structstudent

{intage;charnum[8];};

structstudentstu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};

structstudent*p=stu;

以下选项中引用结构体变量成员的表达式错误的是( )。

A.stu[3].age

B.(p++)->num

C.p->num

D.(*p).num

1010.在VC++6.0下,定义以下结构体类型

structs

{

inta;

charb;

floatf;

};

则语句printf("%d",sizeof(structs))的输出结果为( )。

A.9

B.8

C.7

D.6

1011.在VC++6.0下,定义以下结构体类型

structs

{intx;

floatf;

}a[3];

语句printf("%d",sizeof(a))的输出结果为( )。

A.24

B.20

C.16

D.12

1012.定义以下结构体数组

structc

{intx;

inty;

}s[2]={1,3,2,7};

语句printf("%d",s[0].x*s[1].x)的输出结果为( )。

A.2

B.3

C.4

D.5

1013.在VC++6.0下,定义以下结构体类型

structstudent

{

charname[10];

intscore[50];

floataverage;

}stud1;

则stud1占用内存的字节数是( )。

A.214

B.210

C.206

D.202

1014.如果有下面的定义和赋值,

structSNode

{

unsignedid;

intdata;

}n,*p;

p=&n;

则使用( )不可以输出n中data的值。

A.p.data

B.n.data

C.p->data

D.(*p).data

1015.根据下面的定义,能输出Mary语句的是( )。

structperson

{

charname[9];

intage;

};

structpersonclass[5]={"John",17,"Paul",19,"Mary",18,"Adam",16};

A.printf("%s\n",class[2].name);

B.printf("%s\n",class[1].name);

C.printf("%s\n",class[0].name);

D.printf("%s\n",class[3].name);

1016.定义以下结构体数组

structdate

{intyear;

intmonth;

intday;};

structs

{structdatebirthday;

charname[20];

}x[4]={{2008,10,1,"guangzhou"},{2009,12,25,"Tianjin"}};

语句printf("%s,%d",x[0].name,x[1].birthday.year);的输出结果为( )。

A.guangzhou,2009

B.guangzhou,2008

C.Tianjin,2008

D.Tianjin,2009

1017.定义以下结构体数组

struct

{

intnum;

charname[10];

}x[3]={1,"china",2,"USA",3,"England"};

语句printf("\n%d,%s",x[1].num,x[2].name)的输出结果为( )。

A.2,England

B.2,USA

C.3,England

D.1,china

1018.定义以下结构体数组

structdate

{

intyear;

intmonth;

};

structs

{

structdatebirth;

charname[20];

}x[4]={{2008,8,"hangzhou"},{2009,3,"Tianjin"}};

语句printf("%c,%d",x[1].name[1],x[1].birth.year);的输出结果为( )。

A.i,2009

B.a,2008

C.hangzhou,2008

D.Tianjin,2009

1019.根据下面的定义,能打印出字母M的语句是( )。

structperson{charname[9];intage;};

structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};

A.printf("%c\n",class[2].name[0]);

B.printf("%c\n",class[2].name[1]);

C.printf("%c\n",class[3].name[1]);

D.printf("%c\n",class[3].name);

1020.设有以下语句:

structst{intn;structst*next;};

staticstructsta[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++->n

1021.设有如下定义:

structsk

{inta;floatb;}data,*p;

若有p=&data;,则对data中的a域的正确引用是( )。

A.(*p).a

B.(*p).data.a

C.p->data.a

D.p.data.a

1022.在VC++6.0下,变量a在内存所占字节数是( )。

Structstud

{charnum[6];

ints[4];

doubleave;

}a;

A.30

B.26

C.32

D.34

1023.在VC++6.0下,变量a所占的内存字节数是( )。

structstu

{

charname[20];

longintn;

intscore[4];

}

A.40

B.28

C.30

D.36

1024.设有以下定义语句,输出结果是( )。

structdate

{

intcat;

charnext[10];

doubledog;

}too;

printf(”%d”,sizeof(too));

A. 22

B. 20

C. 24

D.26

1025.设有变量定义

structstu

{

intage;

intnum;

}std,*p=&std;

能正确引用结构体变量std中成员age的表达式是( )。

A. (*p).age

B. *p.age

C. *std->age

D.std->age

1026.根据下面的定义,能打印出字符串"Mary"的语句是( )。

structperson{charname[9];intage;};

structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};

A.printf("%s\n",class[2].name);

B.printf("%s\n",class[2].name[0]);

C.printf("%s\n",class[3].name[0]);

D.printf("%s\n",class[3].name);

1027.设有变量定义

structstu

{

intage;

intnum;

}std,*p=&std;

不能正确引用结构体变量std中成员age的表达式是( )。

A. *p.age

B. (*p).age

C. p->age

D.std.age

1028.设有以下语句:

structst{intn;structst*next;};

staticstructsta[3]={5,&a[1],7,&a[2],9,'\0'},*p;

p=&a[0];

则表达式( )的值是6。

A.p->n+1

B.(*p).n++

C.p->n++

D.p++->n

1029.定义以下结构体数组

structdate

{

intyear;

intmonth;

};

structs

{

structdatebirth;

charname[20];

}x[4]={{2008,8,"hangzhou"},{2009,3,"Tianjin"}};

语句printf("%s,%d",x[1].name,x[1].birth.year);的输出结果为( )。

A.Tianjin,2009

B.a,2008

C.hangzhou,2008

D.i,2009

1030.根据下面的定义,能输出字符M的语句是( )。

structperson

{

charname[9];

intage;

};

structpersonclass[5]={"John",17,"Paul",19,"Mary",18,"Adam",16};

A.printf("%c\n",class[2].name[0]);

B.printf("%c\n",class[1].name);

C.printf("%s\n",class[0].name[0]);

D.printf("%s\n",class[3].name);

1031.如果有下面的定义和赋值,

structSNode

{

unsignedid;

intdata;

}n,*p;

p=&n;

则使用( )可以输出n中data的值。

A.(*p).data

B.n->data

C.*p.data

D.p.data

1032.已知有如下定义:

structa{charx;doubley;}data,*t;

若有t=&data,则对data中的成员的不正确引用是( )。

A.(*t)->x

B.(*t).x

C.t->x

D.data.x

1033.有以下定义:

structperson{charname[9];intage;};

structpersonclass[10]={"Johu",17,"Paul",19,"Mary",18,"Adam",16};

则下面能够输出字母M的语句是( )。

A.printf("%c\n",class[2].name[0]);

B.printf("%c\n",class[3].name);

C.printf("%s\n",class[0].name[0]);

D.printf("%s\n",class[3].name);

1034.有以下程序:

#include

main()

{

structcmplx{intx;inty;}cunu[2]={1,3,2,7};

printf(“%d\n”,cunu[0].y/cunu[0].x*cunu[1].y);

}

程序的运行结果是( )。

A.21

B.6

C.7/3

D.0

1035.设有如下定义:

structsk

{inta;

floatb;

}data;

下面选项中正确定义指针变量,并指向data变量的( )。

A.structsk*p;p=&data;

B.structskp;p=&data;

C.structsk*p;p=data;

D.structsk*p;p=data;

1036.设有如下定义:

structsk

{inta;

floatb;

}data;

下面选项中正确定义指针变量,并指向data变量a成员的( )。

A.int*p;p=&data.a;

B.int*p;p=data.a;

C.intp;p=&data.a;

D.intp;p=data.a;

1037.设有以下说明语句

structuu

{intn;

charch[8];

}PER;

则下面叙述中正确的是( )。

A.PER是结构体变量名

B.PER是结构体标识名

C.structuu是结构体变量名

D.struct是结构体标识名

1038.对于下面程序段的分析,以下四个选项中正确的是( )。

structabc

{inta,b,c,s;};

main()

{structabcs[2]={{1,2,3},{4,5,6}};intt;

t=s[0].a+s[1].b;

printf("%d\n",t);

}

A. 数组s占32个字节的存储空间

B. 数组s占36个字节的存储空间

C. t的值为2

D.t的值为8

1039.设有如下程序定义:

main()

{structcmplx{intx;inty;}cnum[2]={1,3,2,7};

printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}

则以下说法正确的是( )。

A. 数组cnum有2个元素

B. 数组cnum有4个元素

C. 数组cnum有6个元素

D.编译错误

读程序题

1040.以下程序的运行结果是

#include"stdio.h"

main()

{structdate

{intyear,month,day;}today;

printf("%d\n",sizeof(structdate));

}

输出结果:

6

1041.以下程序的输出是

structst

{intx;int*y;}*p;

intdt[4]={10,20,30,40

};

structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0]};

main()

{p=aa;

printf("%d\n",++(p->x));

}

输出结果:

51

1042.下列程序的输出结果是

structabc

{inta,b,c,s;};

main()

{structabcs[2]={{1,2,3},{4,5,6}};intt;

t=s[0].a+s[1].b;

printf("%d\n",t);

}

输出结果:

6

1043.运行下列程序段,输出结果是

structcountry

{intnum;

charname[10];

}x[5]={1,"China",2,"USA",3,"France",4,"England",5,"Spanish"};

structcountry*p;

p=x+2;

printf("%d,%c",p->num,(*p).name[2]);

输出结果:

3,a

1044.下面程序的运行结果是

structKeyWord

{

charKey[20];

intID;

}kw[]={"void",1,"char",2,"int",3,"float",4,"double",5};

main()

{

printf("%c,%d\n",kw[3].Key[0],kw[3].ID);

}

输出结果:

i,3

1045.运行下列程序段,输出结果是

structcountry

{intnum;

charname[20];

}x[5]={1,"China",2,"USA",3,"France",4,"England",5,"Spanish"};

structcountry*p;

p=x+2;

printf("%d,%s",p->num,x[0].name);

输出结果:

3,China

1046.下面程序的运行结果是

structcontry

{

intnum;

charname[20];

}x[5]={1,"China",2,"USA",3,"France",4,"Englan",5,"Spanish"};

main()

{

inti;

for(i=3;i<5;i++)

printf("%d%c",x[i].num,x[i].name[0]);

}

输出结果:

4E5S

1047.下面程序的运行结果是

main()

{structcmplx{intx;inty;}cnum[2]={1,3,2,7};

printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}

输出结果:

6

1048.下面程序的运行结果是

structabc

{inta,b,c;};

main()

{structabcs[2]={{1,2,3},{4,5,6}};intt;

t=s[0].a+s[1].b;

printf("%d\n",t}

输出结果:

6

1049.下面程序的运行结果是

struct HAR

 { int x,y; 

struct HAR *p; } h[2]; 

main() 

{ int h[0].x=1; h[0].y=2; 

h[1].x=3;h[1].y=4; 

h[0].p=&h[1]; h[1].p=h; 

printf("%d%d\n",(h[0].p)->x,(h[1].p)->y); 

}

输出结果:

32

1050.下面程序的运行结果是

struct HAR

 { int x,y; 

struct HAR *p; } h[2]; 

main() 

{ int h[0].x=1; h[0].y=2; 

h[1].x=3;h[1].y=4; 

h[0].p=&h[1]; h[1].p=h; 

printf("%d\n",(*h[0].p).x*(h[1].p)->y); 

}

输出结果:

6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1