延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组1第十章结构体与共用体10.1选择题10.1已知学生记录描述为structstudent{intno;charname[20];charsex;struct{intyear;intmonth;intday;}birth;};structstudents;设变量s中的“生日”应是“984年11月11日”,下列对“生日”的正确赋值方式是___。A)year=984;month=11;day=11B)birth.year=984;birth.month=11;birth.day=11C)s.year=984;s.month=11;s.day=11D)s.birth.year=984;s.birth.month=11;s.birth.day=1110.2当说明一个结构体变量是系统分配给它的内存是___。A)各成员所需内存的总和B)结构体中第一个成员所需内存量C)成员中占内存量最大者所需的容量D)结构中最后一个成员所需内存量10.3以下对结构体类型变量的定义中不正确的是___。A)#defineSTUDENTstructstudentSTUDENT{intnum;floatage;}std1;B)structstudent{intnum;floatage;}std1;C)struct{intnum;floatage;D)struct{intnum;floatage;延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组2}std1;}student;structstudentstd1;10.4设有以下说明语句sturctstu{inta;floatb;}stutype则下面的叙述不正确的是___。A)struct是结构体类型的关键字B)structstu是用户定义的结构体类型名C)stutype是用户定义的结构体类型名D)a和b都是结构体成员名10.5C语言结构体类型变量在程序执行期间___。A)所有成员一直驻留在内存中B)只有一个成员驻留在内存中C)部分成员驻留在内存中D)没有成员驻留在内存中10.6在16位IBM-PC机上使用C语言,若有如下定义:structdata{inti;charch;doublef;}b;则结构体变量b占用内存的字节数是___。A)1B)2C)8D)1110.7以下程序的运行结果是___。#include“stdio.h”main(){structdata{intyear,month,day;}today;printf(“%d\n”,sizeof(structdate));}A)6B)8C)10D)1210.8根据下面的定义,能打印出字母M的语句是___。structperson{charname[9];intage;};structpersonclass[10]={“John”,17“Paul”,19延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组3“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]);10.9以下程序的运行结果是___。main(){structcmplx{intx;inty;}cnum[2]={1,3,2,7};printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x);}A)0B)1C)3D)610.10若有以下定义和语句:structstudent{intage;intnum;};structstudentstu[3]={{1001,20},{1002,19},{1003,21}};main(){}10.11以下scanf函数调用语句中对结构体变量成员的不正确引用是___。structpupil{charname[20];intage;intsex;}pup[5],*p;p=pup;A)scanf(“%s”,pup[0].name);B)scanf(“%d”,&pup[0].age);C)scanf(“%d”,&(p-sex));D)scanf(“%d”,p-age);10.12有以下定义和语句,则以下引用形式不合法的是___。structs{inti1;structs*i2,*i0;延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组4};staticstructa[3]={2,&a[1],’\0’,4,&a[2],&a[0],6,’\0’,&a[1]},*ptr;ptr=a;A)ptr-.i1++B)*ptr-i2C)++ptr-i0D)*ptr-i110.13设有如下定义:structsk;{intn;floatx;}data,*p;若要使p指向data中的n域,正确的赋值语句是___。A)p=&data.nB)*p=data.nC)p=(struct*)&data.n;D)p=(structsk*)data.n10.14若有以下说明和语句:structstudent{intage;intnum;}std,*p;p=&std;则以下对结构体变量std中成员age的引用方式不正确的是___。A)std.ageB)p-ageC)(*p).ageD)*p.age10.15若有以下程序段:structdent{intn;int*m;};inta=1,b=2;c=3;structdents[3]={{101,&a},{102,&b},{103,&c}};main(){structdent*p;p=s;……}则以下表达式中值为2的是___。A)(p++)-mB)(p++)-mC)(*p).mD)*(++p)-m10.16若有以下说明和语句,则对pup中sex域的正确引用方式是___。structpupil{charname[20];intsex;}pup,*p;p=&pup;延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组5A)p.pup.sexB)p-pup.sexC)(*p).pup.sexD)(*p).sex10.17设有以下语句:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,‘\0’},*p;p=&a[0];则以下表达式的值为6的是___。A)p++-nB)p-n++C)(*p).n++D)++p-n10.18以下程序的输出结果是___。structstu{intx;int*y;}*p;intdt[4]={10,20,30,40};structstua[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};main(){p=a;printf(“%d,”,++p-x);printf(“%d,”,(++p)-x);printf(“%d\n”,++(*p-y));}A)10,20,20B)50,60,21C)51,60,21D)60,70,3110.19若有以下说明和语句,则下面表达式中值为1002的是____。structstudent{intage;intnum;}p=stu;A)(p++)-numB)(p++)-ageC)(*p).numD)(*++p).age10.20以下对结构体变量stu1中成员age的非法引用是_____。structstudent{intage;intnum;}std1,*p;p=&std1;A)stu1.ageB)student.ageC)p-ageD)(*p).age10.21设有以下说明和定义语句,则下面表达式中值为3的是_____。延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组6strcucts{inti1;structs*i2;};staticstructsa[3]={1,&a[1],2,&a[2],3,&a[0]},*ptr;ptr=&a[1];A)ptr-i1++B)ptr++-i1C)*ptr-i1D)++ptr-i110.22以下程序的功能是:读入一行字符(如:a,…y,z),按输入时的逆序建立一个链表式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请选择正确的内容填入___中。ZY……aNULL#includestdio.h#definegetnode(type)___1___malloc(sizeof(type))main(){structnode{charinfo;structnode*link;}*top,*p;charc;top=NULL;while((c=getchar())___2___){p=getnode(structnode);p-info=c;p-link=top;top=p;}while(top){___3___;top=top-link;putchar(p-info);free(p);}}1、A)(type)B)(type*)C)typeD)type*2、A)==’\0’B)!=’\0’C)==’\n’D)!=’\n’3、A)top=pB)p=topC)p==topD)top==p延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组710.23若要利用的程序片段使指针变量p指向一个存储整型变量的存储单元,则【】中应填入的内容是______。int*p;p=【】malloc(sizeof(int));A)intB)int*C)(*int)D)(int*)10.24若已建立下面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指的结点插入到链表末尾的一组语句是______。datanext……abNULLpcqA)q-next=NULL;p=p-next;p-next=q;B)p=p-next;q-next=p-next;p-next;C)p=p-next;q-next=p;p-next=q;D)p=(*p).next;(*q).next=(*p).next;(*p).next=q;10.25当说明一个共用体变量时系统分配给它的是______。A)各成员所需内存量的总和B)结构中第一个成员所需内存量C)成员中占内存量最大者所需的容量D)结构中最后一个成员所需的内存量10.26以下C语言中共用体类型数据的叙述正确的是______。A)可以对共用体变量名直接赋值B)一个共用体变量中可以同时存放其所有成员C)一个共用体变量中不能同时存放其所有成员D)共用体类型定义中不能出现结构体类型的成员10.27若有以下定义和语句:uniondata{inti;charc;floatf;}a;intn;则以下语句正确的是______。A)a=5B)a={2,‘a’,1.2};C)printf(“%d\n”,a);D)n=a;10.28设有以下说明,则下面不正确的叙述是______。uniondata{inti;charc;floatf;}un;延安大学西安创新学院理工系C语言程序设计习题C语言精品课程项目组8A)un所占的内存长度等于成员f的长度B)un的地址和它的各成员地址都是同一地址C)un可以作为函数参数D)不能对un赋值,但可以在定义un时对它初始化10.29C语言共用体类型变量在程序运行期间______。A)所有成员一直驻留在内存中B)只有一个成员驻留在内存中C)部分成员驻留在内存中D)没有成员驻留在内存中10.30以下程序的运行结果是______。#includestdio.hmain(){union{longa;intb;charc;}m;printf(“%d\n”,sizeof(m));}A)2B)4C)6D)810.31对下面