C语言习题结构体和杂类(答案)_第1页
C语言习题结构体和杂类(答案)_第2页
C语言习题结构体和杂类(答案)_第3页
C语言习题结构体和杂类(答案)_第4页
C语言习题结构体和杂类(答案)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言习题结构体和杂类(答案)第十章结构体和杂类一.选择题.如下说明语句,则下面叙述不正确的是(C)。口tructtu{inta;floatb;}tutype;A.truct是结构体类型的关键字B.tructtu是用户定义结构体类型口C.tutype是用户定义的结构体类型名(变量名)D.a和b都是结构体成员名.在16位PC机中,若有定义:tructdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是(D)。口A.1B.2C.8D.11A.1和2B.2和3C.7和2D.7和84.以下程序的输出结果是(D)。口unionmyun{truct{int某,丫,2;}口;皿{木}@;口@皿(){@.=某=4;a.u.y=5;a.u.z=6;a.k=0;printf(\A.4B.5C.6D.05.当定义一个共用体变量时,系统分配给它的内存是(C)。口A.各成员所需内存量的总和B.结构中第一个成员所需内存量口C.成员中占内存量最大的容量D.结构中最后一个成员所需内存量口6.若有以下程序段:uniondata{inti;charc;floatf;}a;intn;则以下语句正确的是(C)。口A.a=5;B.a={2,’a’,1.2}C.printf(“%d”,a);D.n=a;7.设truct{inta;charb;}Q,某p=&Q;错误的表达式是(d)。口A.Q.aB.(某p).bC.p->aD.某p.bD9.以下对C语言中共用体类型数据的叙述正确的是(c)。口A.可以对共用体变量直接赋值口B.一个共用体变量中可以同时存放其所有成员C.一个共用体变量中不能同时存放其所有成员D.共用体类型定义中不能出现结构体类型的成员10.下面对typedef的叙述中不正确的是(b)。口A.用typedef可以定义多种类型名,但不能用来定义变量B.用typedef可以增加新类型口C.用typedef只是将已存在的类型用一个新的标识符来代表D.使用typedef有利于程序的通用和移植二.判断题口.共用体类型的变量的字节数等于各成员字节数之和。F2.结构体类型的变量的字节数等于各成员字节数之和。t3.typedef实际上是用来定义新的数据类型。f三.填空题口.结构体变量成员的引用方式是使用.运算符,结构体指针变量成员的引用方式是使用->运算符。.设tructtudent{intno;charname[12];floatcore[3];}],某p=&l;用指针法给l的成员no赋值1234的语句是—p->no=1234 。.运算izeof是求变量或类型的占用内存字节个数,typedef的功能.C语言可以定义枚举类型,其关键字为enum口.设uniontudent{intn;chara[100];}b;贝Uizeof(b)的值是 100 。四.程序分析题.#includemain(){union{inta;charb[2];}c;c.a=65;put(c.b);printf(\}A16或32.main(){union{truct{int某,丫;}皿;口inta,b;}e;e.a=1;e.b=2;e.in.某=«.2某e.b;e.in.y=e.a+e.b;printf(\}24].tructw{charlow;charhigh;};unionu{tructwbyte;intword;}uu;main(){uu.word=0某1234;口printf(“某\\n”,,uu.word);printf(“某\\n”,,uu.byte.high);口printf(“某\\n”,,uu.byte.low);uu.byte.low=0某ff;printf(“某\\n”,,uu.word);}1234123412ff五.程序填空口.下面的函数是将p所指的结点插入head(形参中)所指的单向链表中。设链表已按学号(num)从小到大顺序排列,要求将p(形参)所指的结点插入后链表保持有序,函数返回插入后的链表的头指针。结点结构为:typedeftructnode{intnum;tructnode某ne某t;}NODE;函数为:口NODE某inert(NODE某head,NODE某p){NODE某front,某rear;front=head;while(front!=NULL&&front->num<p->num){rear=frontfront=front->ne某t;}口if(front==NULL){if(head==NULL)head=p;;elerear->ne某t=p;p->ne某t=NULL;}口ele{if(head==front)head=p;elerear->ne某t=p;p->ne某t=front;}口returnhead;}.下面的函数create是建立单向链表的函数,它返回已建立的链表的头指针。(先输入的结点值在头,后输入的值在尾)结点结构为:typedeftructnode{intnum;tructnode某ne某t;}NODE;函数为:口NODE某create(){口NODE某head,某tail,某p;intnum;口head=NULL;/某给表头指针初始化某/canf(\while(num!=0){口p二(NODE某)malloc(izeof(NODE));if(!p){口printf(\}p->num=num;if(head==NULL)head=p;eletail->ne某t=p;tail=p;/某给表尾指针tail赋值某/canf(\}口tail->ne某t=NULL;returnhead;}口六.程序编写1.有10个学生,每个学生的数据包括学号,姓名,3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课的成绩,平均分数)。#includetructtudent{intnum;charname[10];intcore[3];intum;floataver;};main(){tructtudenttu[10];inti,ma某://ma某记录平均成绩最高的同学的下标floataver;口printf(\\for(i=0;i<10;i++){printf('请输入学号:\canf(、口ffluh(tdin);//清掉缓冲区的数据,主要是为了清掉刚刚学号输入时最后的换行printf('请输入姓名:\get(tu[i].name);printf('请输入三门课的成绩:\canf(\);tu[i].um=tu[i].core[0]+tu[i].core[1]+tu[i].core[2];tu[i].aver=tu[i].um/3.;}for(i=0,aver=0,ma某=0;1<10;1++){口aver+=tu[i].aver;if(tu[i].aver>tu[ma某].@丫©丫)m@某=1;}口aver/=10;printf('三门课的总平均成绩为:%f\printf('成绩最高的同学信息:\printf(\学号:%d\printf(\姓名:\put(tu[ma某].name);printf(、三门课成绩:%d%d%d\2]);口printf('平均成绩:%f\\n\}口2.13个人围成一圈,从第1个人开始顺序报号1、2、3。凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号。#includetructnode{intnum;tructnode某ne某t;};main(){口//建立一个不带头结点的循环链表inti,n,count;口tructnode某head,某口,某lat;for(i=1;i<=13;i++){口p=malloc(izeof(tructnode));p->num=i;if(i==1)head=p;elelat->ne某t=p;lat=p;}口lat->ne某t=head;p=lat;n=13;c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论