《C语言程序设计教程》(第三版)李凤霞-主编——第十章习题答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

习题十一、单选题1~5DDDCC6~10AABDB11~14CADC二、填空题1、34122、ARRAYa,b,c;3、134、ac5、(*b).day=?b-day=?5、分析下列程序执行结果。#include“stdio.h”main(){staticstructs1{charc[4],*s;s1={“abc”,”def”};staticstructs2{char*cp;structs1ss1;}s2={“ghi”,{“jkl”,”mno”}};printf(“%c%c\n”,s1.c[0],*s1.s);/*outputab*/printf(“%s%s\n”,s1.c,s1.s);/*outputabcdef*/printf(“%s%s\n”,s2.cp,s2.ss1.s);/*outputghimno*/printf(“%s%s\n”,++s2.cp,++s2.ss1.s);/*outputhino*/}6、以下程序的功能是:读入一行字符(如:a,...,y,z),按输入时的逆序建立一个链式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。#includestdio.h#definegetnode(type)_________malloc(sizeof(type))((structnode*))main(){structnode{charinfo;structnode*link;}*top,*p;charc;top=NULL;while((c=getchar())______________)(!='\n'){p=getnode(structnode);p-info=c;p-link=top;top=p;}while(top){_________________;(p=top)top=top-link;putchar(p-info);free(p);zyA^}}7、下面的函数将指针p2所指向的线性链表链接到p1所指向的的链表的末端。假定p1所指向的链表非空。#defineNULL0structlink{floata;structlink*next;};concatenate(p1,p2)structlist*p1,*p2;{if(p1-next==NULL)p1-next=p2;elseconcatenate(___________,p2);(p-next)}8、以下函数create用来建立一个带头结点的单项链表。新产生的结点总是插入再链表的末尾。单向链表的头指针作为函数的返回值。#includestdio.hstructlist{chardata;structlist*list;};structlist*cteate(){structlist*h,*p,*q;charch;h=___________malloc(sizeof(structlist));(structlist*)p=q=h;ch=getchar();while(ch!='\n'){p=____________malloc(sizeof(structlist));(structlist*)p-date=ch;q-next=p;q=p;ch=getchar();}p-next='\0';______________;(rerturnh)}三、编程题1、成绩排序。按学生的序号输入学生的成绩,按照分数由低到高的顺序输出学生的名次、该名次的分数、相同名次的人数和学号;同名次的学号输出再同一行中,一行最多输出10个学号。#includestdio.hstructstudent{intn;intmk;}main(){inti,j,k,count=0,no;structstudentstu[100],*s[100],*p;printf(\nPleasseentermark(ifmark0isend)\n);for(i=0;i100;i++){printf(No.%4d==',i+1);scanf(%d,&stu[i].mk);s[i]=&stu[i];stu[i].n=i+1;if(stu[i].mk=0)break;for(j=0;jI;j++)for(k=j+1;k=I;k++)if(s[j]-mks[k]-mk){p=s[j];s[j]=s[k];s[k]=p;}}for(no=1,count=1,j=0;jI;j++){if(s[j]-mks[k+1]-mk){printf(\nNo.%3d==%4d%4d:,no,s[j]-mk,count);for(k=j-count+1;k=j;k++){ptintf(%3d,s[k]-n);if((k-(j-count))%10==0&&k!=j)printf(\n);}count=1;no++;}elsecount++;}}2、现在有教师(姓名、单位、住址、职称)和学生(姓名、班级、住址、入学成绩)的信息。请在输入10名教师和学生的信息后,按姓名进行排序,最后按排序后的顺序进行输出,对于教师要输出姓名、单位、住址和职称,对学生要输出姓名、班级、住址和入学成绩。请编程实现。/*p332_2.c*/#includestring.huniondwbj{chardw[20];charbj[10];};unionzcrxcj{charzhich[10];floatrxcj;};structinf{intfl;/*0:teacher;1:student*/charname[20];uniondwbjdb;charaddr[30];unionzcrxcjzs;};main(){inti,j;structinfinfo[10];for(i=0;i10;i++){printf(teacher:input0;student:input1\n);scanf(%d,&info[i].fl);printf(Inputnameofteacherorstudent:\n);scanf(%s,info[i].name);printf(Inputdeptofteacherorclassofstudent:\n);if(info[i].fl==0)scanf(%s,info[i].db.dw);elsescanf(%s,info[i].db.bj);printf(Inputaddress:\n);scanf(%s,info[i].addr);printf(jobofteacherorsucofstudent\n);if(info[i].fl==0)scanf(%s,info[i].zs.zhich);elsescanf(%f,&info[i].zs.rxcj);}for(i=0;i10;i++){printf(%s,,info[i].name);if(info[i].fl==0)printf(%s,,info[i].db.dw);elseprintf(%s,,info[i].db.bj);printf(%s,,info[i].addr);if(info[i].fl==0)printf(%s\n,info[i].zs.zhich);elseprintf(%f\n,info[i].zs.rxcj);}}

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功