您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > c程序设计第九章结构体
一、概念题二、判断题1.结构体中的成员不可以单独使用(F)。2.成员名可以与程序中的变量名相同,二者不代表同一对象(T)。3.不能将一个结构体变量作为一个整体进行输入输出(T)。4.结构体变量所占内存长度是各成员占的内存长度之和(T)。5.结构体中的成员不可以单独使用(F)。9.一个结构体变量的指针就是该变量所占内存段的起始地址(T)。10.用结构体变量作实参,形参也必须是同类型的结构体变量(T)。三、单选题1.设变量定义如下,则对其中的结构分量num正确的引用是()。structstudent{intnum;charname[20];floatscore;}stud[10];A.stud[1].num=10;B.student.stud.num=10;C.struct.stud.num=10;D.structstudent.num=10;2.已知职工记录描述如下,设变量w中的“生日”是“1993年10月25日”,下列对“生日”的正确赋值方式是()。structworker{intno;charname[20];charsex;structbirth{intday;intmonth;intyear;}a;};structworkerw;Aday=25;month=10;year=1993;Bw.birth.day=25;w.birth.month=10;w.birth.year=1993;Cw.day=25;w.month=10;w.year=1993;Dw.a.day=25;w.a.month=10;w.a.year=1993;3.对于以下的变量定义,语句()在语法和语义上都是正确的。structnode{floatx,y;chars[10];}point={1,2,”abc”},*p;A.*p=point;B.p=&point;C.point=p;D.p-x=point.y;4.设有以下语句typedefstructS{intg;charh;}T;则下面叙述中正确的是()。A.用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量5.设有如下说明typedefstructna{intn;charc;doublex;}STD;则以下选项中,能正确定义结构体数组并赋初值的语句是()。A.STDtt[2]={{1,'A',62},{2,'B',75}};B.STDtt[2]={{1,A,62},2,B,75};C.structtt[2]={{1,'A'},{2,'B'}};D.structtt[2]={{1,A,62.5},{2,B,75.0}};6.若要说明一个类型名STP,使得定义语句STPs等价于char*s,以下选项中正确的是()。A.typedefSTPchar*s;B.typedef*charSTP;C.typedefstp*char;D.typedefchar*STP;7.设有如下定义: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));8.以下程序执行后输出结果是()。main(){union{unsignedintn;unsignedcharc;}u1ul.c=’A’;printf(%c\n,u1.n);}A.产生语法错B.随机值C.AD.65四、程序填空题1.运行以下程序将打印出如下结果:#defineNULL0structperson{char*nam;charsex;structperson*next;};main(){structpersona,b,c,d,*head,*s;a.nam=Liming;a.sex='W';b.nam=Hangkai;b.sex='M';c.nam=Liufei;c.sex='M';d.nam=Fangke;d.sex='W'【1】;head=&a;a.next=&b【2】;b.next=&d【3】;d.next=NULL;s=head;do{printf(%s:【4】%c\n,s-nam,s-sex);s=s-next;}while(s!=NULL);}2.以下程序中给指针p分配三个double型动态内存单元,请填空。#includestdlib.hmain(){double*p;p=(double*)malloc(sizeof(double)【1】);p[0]=1.5;p[1]=2.5;p[2]=3.5;printf(%f%f%f\n,p[0],p[1],p[2]);}3.已知结构数组person中存有N个人员的姓名和年龄,以下程序的功能为输出数组中最大者的姓名和年龄。请填空:#defineN3structman{charname[20];intage;};structmanfind(structman*p,intn){structman*q;inti;q=p;Liming:WHangkai:MFangke:Wfor(i=0;in;i++){if(p-ageq-age【5】)q=p;p++;}returnq;}main(){structman*p,*q;structmanperson[N]={“zhang”,27,”li”,18,”wang”,73};p=person;q=find(p,N)【6】;printf(“年龄最大者为:%s,其年龄为:%d\n”,q-name,q-age【7】)}4.已知head指向一个带头结点的链表,链表中每个结点包含整型数据域(data)和指向链表结点的指针域(next),以下函数返回链表中所有结点数据域之和,请填空:structlist{intdata;structlist*next;};main(){structlist*head;ints;s=sum(head);}sum(structlist*h【5】){structlist*p;ints=0;p=h-next;while(p!=NULL){s=p-data【6】;p=p-next【7】;}returns;}5.下列程序读入时间数值,将其加1秒后,输出,时间格式为hh:mm:ss,即时:分:秒。当小时等于24小时,置为0。#includestdio.hstruct{inthour;intminute;intsecond;}time;main(){scanf(“%d:%d:%d”,&time.hour,&time.minute,&time.second【1】);time.second++;if(【2】time.second==60){time.minute++;【3】time.second=0;if(time.minute==60){time.hour++;time.minute=0;if(time.hour==24)time.hour=0;}}printf(“%d:%d:%d\n”,time.hour,time.minute,time.second);}6.下列函数用于将链表中各结点的数据依次输出。请填空:structstudent{intdata;structstudent*next;}voidout(structstudent*head){【8】structstudent*p;p=head;if(head!=NULL)do{printf(“%d\n”,p-data);【9】p=p-next;}while(【10】p!=NULL);}五、程序阅读题1.以下程序执行后输出结果:structSTU{charname[10];intnum;};voidf1(structSTUc){structSTUb={LiSiGuo,2042};c=b;}voidf2(structSTU*c){structSTUb={SunDan,2044};*c=b;}main(){structSTUa={YangSan,2041},b={WangYin,2043};f1(a);f2(&b);printf(%d%d\n,a.num,b.num);}204120442.以下程序执行后输出结果是:structSTU{charname[10];intnum;intScore;};main(){structSTUs[5]={{YangSan,20041,703},{LiSiGuo,20042,580},{wangYin,20043,680},{SunDan,20044,550},{Penghua,20045,537}},*p[5],*t;inti,j;for(i=0;i5;i++)p[i]=&s[i];for(i=0;i4;i++)for(j=i+1;j5;j++)if(p[i]-Scorep[j]-Score){t=p[i];p[i]=p[j];p[j]=t;}printf(5d%d\n,s[1].Score,p[1]-Score);}5805503.以下程序的运行结果是:。#includestring.htypedefstructstudent{charname[10];longsno;floatscore;}STU;main(){STUa={zhangsan,2001,95},b={Shangxian,2002,90},c={Anhua,2003,95},d,*p=&d;d=a;if(strcmp(a.name,b.name)0)d=b;if(strcmp(c.name,d.name)0)d=c;printf(%ld%s\n,d.sno,p-name);}2002Shangxian4.以下程序执行后的输出结果是:#includestdio.hstructstu{intnum;charname[10];intage;};voidpy(structstu*p){printf(%s\n,(*p).name);}voidmain(){structstustudent[3]={{1001,Sun,25},{1001,Ling,23},{1003,Shen,22}};py(student+2);}Shen5.以下程序执行后的输出结果是:#includestdio.hvoidmain(){structT1{charc[4],*s;}s1={abc,def};structT2{char*cp;structT1ss1;}s2={ghi,{jkl,mno}};printf(%c,%c\n,s1.c[0],*s1.s);printf(%s,%s\n,s1.c,s1.s);printf(%s,%s\n,s2.cp,s2.ss1.s);printf(%s,%s\n,++s2.cp,++s2.ss1.s);}6.以下程序执行后的输出结果是:#includestdlib.hstructNODE{intnum;structNODE*next;};main(){structNODE*p,*q,*r;intsum=0;p=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(structNODE));r=(structNODE*)malloc(sizeof(structNODE));p-num=1;q-num=2;r-num=3;p-next=q;q-next=r;r-next=NULL;sum+=q-next-num;sum+=p-num;printf(%d\n,sum);}47.以下程序执行后输出结果:#includestdio.h#defineLENsizeof(structline)structline{intnum;structline*
本文标题:c程序设计第九章结构体
链接地址:https://www.777doc.com/doc-2907616 .html