您好,欢迎访问三七文档
第11章结构与联合一、单选题1下列关于结构的说法错误的是:A:结构是由用户自定义的一种数据类型B:结构中可设定若干个不同数据类型的成员C:结构中成员的数据类型可以是另一个已定义的结构D:在定义结构时,可以为成员设置默认值答案:D2以下关于结构体的叙述中,错误的是:A:结构体是一种可由用户构造的数据类型B:结构体中的成员可以具有不同的数据类型C:结构体中的成员不可以与结构体变量同名D:结构体中的成员可以是指向自身结构的指针类型答案:C3以下结构体类型说明和变量定义中,正确的是:A:structSS{charflag;floatx;}structSSa,b;B:struct{charflag;floatx;}SS;SSa,b;C:structss{charflag;floatx;};D:typedef{charflag;floatx;}SS;SSa,b;答案:C4以下对结构体类型变量st的定义中,不正确的是:A:struct{charc;inta;}st;B:struct{charc;inta;}TT;structTTst;C:typedefstruct{charc;inta;}TT;TTstD:#defineTTstructTT{charc;inta;}st;答案:B5设有以下说明语句:structstu{inta;floatb;}stutype;则下面的叙述不正确的是:A:struct是结构体类型的关键字B:structstu是用户定义的结构体类型名C:stutype是用户定义的结构体类型名D:a和b都是结构体成员名答案:C6在16位IBM-PC机上使用C语言时,若有如下定义:structdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是:A:1B:2C:8D:11答案:D7以下程序的运行结果是:#includestdio.hmain(){structdate{intyear;intmonth;intday:}today;printf(%d\n,sizeof(structdate));}A:6B:8C:10D:12答案:A8下面程序的运行结果是:main(){structcmplx{intx;inty;}c[2]={1,3,2,7};printf(%d,c[0].y/c[0].x*c[1].x);}A:0B:1C:3D:6答案:D9若有以下说明和语句,则对pup中sex域的正确引用方式是:structpupil{charname[20];intsex;}pup,*p;p=&pup;A:p.pup.sexB:p-pup.sexC:(*p).pup.sexD:(*p).sex答案:D10已知职工记录描述为structworkers{intno;charname[20];charsex;struct{intday;intmonth;intyear;}birth;};structworkersw;设变量w中的“生日”应是“1993年10月25日”,下列对“生日”的正确赋值方式是:A:day=25;month=10;year=1993;B:w.dat=25;w.month=10;w.year=1993;C:w.birth.day=25;w.birth.month=10;w.birth.year=1993;D:birth.day=25;birth.month=10;birth.year=1993;答案:C11当定义一个结构体变量时系统分配给它的内存是:A:各成员所需内存量的总和B:成员中占内存量最大者所需的容量C:结构中第一个成员所需内存量D:结构中最后一个成员所需内存量答案:A12以下定义结构体类型的变量st1,其中不正确的是:A:typedefstructstudent{intnum;intage;}STD;STDst1;B:structstudent{intnum;intage;}st1;C:struct{intnum;intage;}st1;D:tructstudent{intnum;intage;}structstudentst1;答案:D13设有以下定义:structsk{inta;floatb;}data,*p;若要使p指向data中的a域,正确的赋值语句是:A:p=(structsk*)&data.a;B:p=(structsk*)data.a;C:p=&data.aD:*p=data.a答案:A14若有以下的定义、说明和语句,则值为101的表达式是:structwc{inta;int*b;}*p;intx0[]={11,12},x1[]={31,32};staticstructwcx[2]={100,x0,300,x1};p=x;A:*p-bB:p-aC:++p-aD:(p++)-a答案:C15根据下面的定义,能打印出字母M的语句是:structperson{charname[9];intage;};structpersonchass[10]={John,17,Paul,19,Mary,18,Adam,16};A:printf(%c,class[3].name);B:printf(%c,class[3].name[1]);C:printf(%c,class[2].name[1]);D:printf(%c,class[2].name[0]);答案:D16若有以下定义:structperson{intid;charname[10]:}per,*s=&per;则以下对结构体成员的引用中错误的是:A:per.nameB:s-name[0]C:(*per).name[8]D:(*s).id答案:C17若有以下说明和语句,则下面表达式中值为1002的是()structstudent{intage;intnum;};structstudentstu[3]={{1001,20},{1002,19},{1003,21}};structstudent*p;p=stu;A:(p++)-numB:(p++)-ageC:(*p).numD:(*++p).age答案:D18当说明一个共用体变量时,系统分配给它的内存是()A:各成员所需内存量的总和B:共用体中第一个成员所需内存量C:成员中占内存量最大者所需的内存量D:共用体中最后一个成员所需内存量答案:C19以下对C语言中共用体类型数据的叙述正确的是()A:可以对共用体变量名直接赋值B:一个共用体变量中可以同时存放所有成员C:一个共用体变量中不能同时存放其所有成员D:共用体类型定义中不能出现结构体类型的成员答案:C20若有以下定义和语句:uniondata{inti;charc;floatf;}a;则以下语句正确的是:A:a=5B:printf(%d\n,a.i);C:a={2,'a',1.2};D:n=a答案:B二、多选题1.若有以下说明和语句:structstudent{intage;intnum;}std,*p;p=&std;则以下对结构体变量std中成员age的引用方式正确的是()A.std.ageB.p-ageC.(*p).ageD.*p.age答案:ABC2.设有以下说明语句structstu{inta;floatb;}stutype;则以下叙述正确的是()A.struct是结构体类型的关键字B.structstu是用户定义的结构体类型C.stutype是用户定义的结构体类型名D.a和b都是结构体成员名答案:ABD3.以下说法正确的是()A.结构体变量的名称为该结构体变量的存储首地址B.结构体变量占用空间的大小为各成员项占用空间大小之和C.结构体类型定义时不分配存储空间D.同一结构体类型的不同变量的同名成员项数据类型相同答案:CD4.有以下语句:structlie{inta,floatb;}st;则在下面叙述中,正确的是()A.struct是结构类型的关键字B.structlie是用户定义的结构类型C.st是用户定义的结构类型名D.a和b都是结构成员名答案:ABD5.在说明一个共用体变量时,系统分配给他的存储空间,描述不正确的是()A.该共用体中第一个成员所需存储空间B.该共用体中最后一个成员所需存储空间C.该共用体中占用最大存储空间的成员所需存储空间D.该共用体中所有成员所需存储空间的总和答案:ABD6.若有以下说明和定义uniondt{inta;charb;doublec;}data;以下叙述中正确的是A.data的每个成员起始地址都相同B.变量data所占的内存字节数与成员c所占字节数相等C.程序段:data.a=5;printf(%f\n,data.c);输出结果为5.000000D.data可以作为函数的实参答案:ABD7.设有如下说明typedefstructST{longa;intb;charc[2];}NEW;则下面叙述中不正确的是A.以上的说明形式非法B.ST是一个结构体类型C.NEW是一个结构体类型D.NEW是一个结构体变量答案:AD8.关于枚举类型,描述正确的是()A.枚举类型变量的取值范围只限于类型定义时所列出的值。B.枚举值可以按整型输出其序号值。C.枚举值可以进行加(减)一个整数n的运算,用以得到其前(后)第n个元素的值。D.枚举值可以按定义时的序号进行关系比较。答案:ABD三、判断题1.结构和联合都是由多个不同的数据类型成员组成,但在任何同一时刻,联合中只存放了一个被选中的成员,而结构的所有成员都存在。()答案:正确2.对于联合的不同成员赋值,相会对其他成员重写,原来成员的值就不存在了而对于结构的不同成员赋值是互不影响的。()答案:正确3.共用体变量可以作为函数的参数成函数值,也可使用指向共用体的指针变量。()答案:错误4.共用体不可以作为结构的成员,但结构也可作为共用体的成员。()答案:错误5.在说明枚举类型的同时,编译程序按顺序给每个枚学元素一个对应的序号,序号的值从0开始,后续元素顺序加l。答案:正确6.枚举类型数据在使用时,枚举值可以按整型输出其序号值。答案:正确7.8.9.10.四、填空题1.typedefunion{longi;intk[5];charc;}DATE;structdate{intcat:DATEcow;doubledog;}too;DATEmax;则以下语句的执行结果是。printf(%d,sizeof(structdate)+sizeof(max));答案:302.有以下说明定义和语句:strtuct{intday;charmouth;intyear;}a,*b;b=&a;可用a.day引用结构体成员day,请写出引用结构体成员a.day的其他两种形式:,。答案:1.b-day2.(*b).day3.为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域)。请填空:datanextstructlink{chardata;;}node;答案:sructlink*next;五、读程序,写出结果1.—字符‘0’的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是()。#include<stdio.h>main(){union{inti[2];longl;charc[4]}r,*s=&r;s-i[0]=0x39;s-i[1]=0x38;printf(%c\n,s-[0]);A.39B.9C.38D.8答案:B2下面程序运行后的输出结果应为:#includestdio.hmain(){union{inta[2];longb;charc[4];}s;s.a[0]=0x39;s.a[1]=0x38;printf(%c,s.c[0]);}A.39B.9C.38D.8答案:B3下面的程序的运行结果应为:#includestdio.hmain(){intj;union{inta;longb;unsignedcharc;}m;m.b=0x12345678;printf(%x,m.c);}A.1234B.56
本文标题:第11章结构
链接地址:https://www.777doc.com/doc-2242343 .html