您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第6章-结构体与共用体
一、判断题1.结构体的定义不为它分配具体的内存空间。答案:T2.C++语言结构体类型变量在程序执行期间,所有成员驻留在内存中。答案:T3.一个共用体变量中可以同时存放其所有成员。答案:F4.若有定义uniondt{inta;charb;doublec;}data;,变量data所占的内存字节数与成员c所占字节数相等。答案:F5.用typedef可以增加新类型。答案:F6.共用体类型数据中所有成员的首地址都是同一地址。答案:T7.可以用已定义的共用体类型来定义数组或指针变量的类型。答案:T8.共用体类型数据中的成员可以是结构体类型,但不可以是共用体类型。答案:F9.可以对共用体变量直接赋值。答案:F二、选择题1.下面关于结构体概念的叙述中,正确的说法是()。A.相同类型数据的集合称为结构体B.不同类型数据的集合称为结构体C.数据的集合称为结构体D.整数的集合称为结构体答案:C2.设有以下说明语句:structabc{intm;floatn;}stype;则下面错误的叙述是()。A.struct是定义结构体类型的关键字B.stype是结构体类型名C.m和n都是结构体成员名D.stype是结构体变量名答案:B3.以下对枚举类型ee的定义中,正确的定义是()。A.enumee{A,B,C,D};B.enumee{'A','B','C','D'};C.enumee={A,B,C,D};D.enumee={'A','B','C','D'};答案:A4.以下关于同类型结构体与同类型共用体赋值的叙述中,正确的说法是()。A.共用体变量之间可以直接赋值,结构体变量之间也可以直接赋值B.共用体变量之间可以直接赋值,结构体变量之间不可以直接赋值C.共用体变量之间不可以直接赋值,结构体变量之间可以直接赋值D.共用体变量之间不可以直接赋值,结构体变量之间也不可以直接赋值答案:A5.设有如下定义:structdata{inti;uniontest{charch;doubleq;}t;doublef;}b;若字符型变量占1个字节,整型变量占4个字节,双精度变量占8个字节,则结构体变量b占用内存的字节数是()。A.8B.9C.18D.20答案:D6.以下关于数据类型int的别名定义中,正确的定义是()。A.typedefintInteger;B.typedefint=Integer;C.typedefIntegerint;D.typedefInteger=int;答案:A7.设有枚举类型定义:enumcolor{red=3,yellow,blue=10,white,black};则枚举常量black的序号值是()。A.4B.5C.7D.12答案:D8.一个结构体变量所占的内存字节数是()。A.结构体中第一个成员所需的内存字节数B.结构体中最后一个成员所需的内存字节数C.结构体中占用内存最大的成员所需的字节数D.结构体中各成员所需的内存字节数之和答案:D9.当定义一个共用体变量时系统分配给它的内存字节数是()。A.共用体中第一个成员所需的内存字节数B.共用体中最后一个成员所需的内存字节数C.共用体中占用内存最大的成员所需的字节数D.共用体中各成员所需的内存字节数之和答案:C10.以下关于结构体与共用体数据成员定义的叙述中,正确的说法是()。A.结构体类型定义中不能出现共用体类型的成员,共用体类型定义中也不能出现结构体类型的成员B.结构体类型定义中不能出现共用体类型的成员,共用体类型定义可以出现结构体类型的成员C.结构体类型定义中可以出现共用体类型的成员,共用体类型定义中不能出现结构体类型的成员D.结构体类型定义中可以出现共用体类型的成员,共用体类型定义中也可以出现结构体类型的成员答案:D11.在说明一个结构体变量时系统分配给它的存储空间是()。A.该结构体中第一个成员所需存储空间B.该结构体中最后一个成员所需存储空间C.该结构体中占用最大存储空间的成员所需存储空间D.该结构体中所有成员所需存储空间的总和答案:D12.若有以下说明和语句:structworker{intno;char﹡name;}work,﹡p=&work;则以下引用方式不正确的是()。A.work.NoB.(﹡p).noC.p-noD.work-no答案:D13.有如下定义:structdate{intyear,month,day;};structworklist{charname[20];charsex;structdatebirthday;}person;对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是()。A.year=1958B.birthday.year=1958C.person.birthday.year=1958D.person.year=1958答案:C14.以下对结构体类型变量的定义中不正确的是()。A.#defineSTUDENTstructstudentSTUDENT{intnum;floatage;}std1;B.structstudent{intnum;floatage;}std1;C.struct{intnum;floatage;}std1;D.struct{intnum;floatage;}student;structstudentstd1;答案:D15.设有以下说明语句structstu{inta;floatb;}stutype;则下面的叙述不正确的是()。A.struct是结构体类型的关键字B.structstu是用户定义的结构体类型C.stutype是用户定义的结构体类型名D.a和b都是结构体成员名答案:C16.C++语言结构体类型变量在程序执行期间()。A.所有成员一直驻留在内存中B.只有一个成员主留在内存中C.部分成员驻留在内存中D.没有成员驻留在内存中答案:A17.以下程序的运行结果是()。#includestdio.hmain(){structdate{intyear,month,day;}today;printf(“%d\n”,sizeof(structdate));}A.6B.8C.10D.12答案:A18.有如下定义structperson{charname[9];intage;};structpersonclass[10]={“Johu”,17,“Paul”,19“Mary”,18,“Adam16,};根据上述定义,能输出字母M的语句是()。A.prinft(“%c\n”,class[3].mane);B.pfintf(“%c\n”,class[3].name[1]);C.prinft(“%c\n”,class[2].name[1]);D.printf(“%^c\n”,class[2].name[0]);答案:D19.设有如下定义structss{charname[10];intage;charsex;}std[3],*p=std;下面各输入语句中错误的是()。A.scanf(%d,&(*p).age);B.scanf(%s,&std.name);C.scanf(%c,&std[0].sex);D.scanf(%c,&(p-sex))答案:B20.设有以下说明语句,则下面的叙述中不正确的是()。structex{intx;floaty;charz;}example;A.struct结构体类型的关键字B.example是结构体类型名C.x,y,z都是结构体成员名D.structex是结构体类型答案:B21.若程序中有下面的说明和定义:structstt{intx;charb;}structstta1,a2;则会发生的情况是()。A.程序将顺利编译、连接、执行。B.编译出错。C.能顺利通过编译、连接,但不能执行。D.能顺利通过编译,但连接出错。答案:B22.已知教师记录定义为:structstudent{intno;charname[30];struct{unsignedintyear;unsignedintmonth;unsignedintday;}birthday;}stu;structstudent*t=&stu;若要把变量t中的生日赋值为“1980年5月1日”,则正确的赋值方式为()。A.year=1980;month=5;day=1;B.t.year=1980;t.month=5;t.day=1;C.t.birthday.year=1980;t.birthday.month=5;t.birthday.day=1;D.t-birthday.year=1980;t-birthday.month=5;t-birthday.day=1;答案:D23.以下结构类型可用来构造链表的是()。A.structaa{inta;int*b;};B.structbb{inta;bb*b;};C.structcc{int*a;ccb;};D.structdd{int*a;aab;};答案:B24.以下程序的输出结果是()。amovep(int*p,inta[3][3],intn){inti,j;for(i=0;in;i++)for(j=0;jn;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);amovep(p,a,3);printf(%d%d\n,p[2],p[5]);free(p);}A.56B.25C.34D.程序错误答案:A25.以下程序的输出结果是()。structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1].x;h[1].p=&h[0].x;printf(%d%d\n,(h[0].p)-x,(h[1].p)-y);}A.12B.23C.14D.32答案:D三、程序填空题1.题目描述:结构体数组中存有3个人的姓名和年龄,输出3个人中最年长者的姓名和年龄。代码:#includeiostream.hstructman{charname[20];intage;}person[]={李明,18,王华,19,张平,20};intmain(){structman*p,*q;intold;p=person;old=(1);q=(2);for(;(3);p++)if(oldp-age){q=p;old=(4);}cout(5)q-age;return0;}答案:(1)p-age(2)p(3)pperson+3(4)p-age(5)q-name2.题目描述:输入学生的信息存入结构体数组。每个学生的信息包括姓名、学号、性别。若是男同学(字符'm'表示男同学,'w'表示女同学),则需登记视力正常与否(正常—'Y',不正常—'N');若是女同学,则要登记身高和体重(不登记视力)。代码:#includeiostream.hconstintN=10;struct{charname[10];intnumber;charsex;union{chareye;struct{intheight;intweight;}f;}body;}per[N];intmain(){inti;for(i=0;iN;i++){cinper[i].nameper[i].numberper[i].sex;if(per[i].sex=='m')cin(1);elsecin(2)(3);}return0;}答案:(1)per[i].body.eye(2)per[i].body.f.height(3)per[i].body.f.weight3.题目描述:以下程序的功能是计算两个复数的差。代码:#includeiostream.hstructcomplex{floatre;floatim;};complex*sub(complex*x,complex*y){(1)
本文标题:第6章-结构体与共用体
链接地址:https://www.777doc.com/doc-2197101 .html