ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:18.19KB ,
资源ID:5440880      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5440880.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(完整版C语言程序设计第四版第九章答案谭浩强.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整版C语言程序设计第四版第九章答案谭浩强.docx

1、完整版C语言程序设计第四版第九章答案谭浩强第九章91定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。解:Structint year;int month;int day;date;main()int days; printf(“Input year,month,day:”); scanf(“%d,%D,%d”,&date.year,&date.month,&date.day); switch(date.month)case 1: days=date.day; break; case 2: days=date.day+31; break; case 3: days=

2、date.day+59; break; case 4: days=date.day+90; break; case 5: days=date.day+120; break;case 6: days=date.day+31; break; case 7: days=date.day+181; break; case 8: days=date.day+212; break;case 9: days=date.day+243; break;case 10: days=date.day+273; break;case 11: days=date.day+304; break;case 12: days

3、=date.day+334; break;if(date.year%4=0&date.year%100!=0|date.year%400=0)&date.month=3)days+=1;printf(“n%d/%d is the %dth day in%d.”,date.month,data.day,days,date,year);9.2写一个函数days,实现上面的计算。由主函数将年、月、日传递给days 函数,计算后将日数传回主函数输出。解:struct y_m_dint year:int month;int day;date;intdays(struct y_m_d date1)int

4、sum;switch(data.month)case 1:sum=date1.day; break;case 2:sum=date1.day+31; break;case 3:sum=date1.day+59; break;case 4:sum=date1.day+90; break;case 5:sum=date1.day+120; break;case 6:sum=date1.day+151; break;case 7:sum=date1.day+181; break;case 8:sum=date1.day+212; break;case 9:sum=date1.day+243; bre

5、akcase 10:sum=date1.day+243; breakcase 11:sum=date1.day+243; breakcase 12:sum=date1.day+243; break;9.3编写一个函数print,打印一个学生的成绩数,该数组中有5个学生的数据记录,每个记录包括num、name、sore3,用主函数输入这些记录,用print函数输出这些记录。解:#define N 5struct studentchar num6; char name8; int score4;stuN;main()int I,j ; for(I=0;IN;I+)printf(“Input sco

6、re of student %d:n”,I+1); printf(“no.:”); scanf(“%s”,stui.num); printf(“name:”); scanf(“%s”,stui.name); for(j=0;j3;j+) printf(“score%d:”j+1); scanf(“%d”,&stui.scorej);printf(“n”);print(stu);print(struct student stu6)int I,j; printf(“%5s%10s”,stui.num,stui.name); for(j=0;j3;j+) printf(“%9d”,stui.scor

7、ej); print(“n”);9.4在上题的基础上,编写一个函数input,用来输入5个学生的数据记录。解: #define N 5 struct student char num6; char name8;int score4stuN;input(struct student stu)int I,j;for(I=0;IN;I+)printf(“input scores of student %d:n”,I+1);printf(“NO.:”);scanf(“%s”,stui.num);printf(“name: ”);scanf(“%s”, stui.name);for(j=0;j3;j+)

8、printf(“score%d:”,j+); scanf(“%d”, &stui.scorej);printf(“n”);9.5 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)解:#define N 10struct studentchar num6char name8int score4float avr;stuN;main()int I,j,max,maxi,sum;float average;for(I=0;IN;I+)printf(“nInput scores of

9、 student %d:n”,I+1); printf(“NO.:”); scanf(“%s”,stui.num); printf(“name”); scanf(“%s”,stui.name);for(j=0;j3;j+)printf(“score %d:”,j+1); scanf(“%d”, &stui.scorej);average=0;max=0;maxi=0;for(i=0;i3;i+)sum=0;for(j=0;jmax)max=sum;maxi=I;average/=N;printf(“NO. name score1 score2 score3 averagen”);for(I=0

10、;IN;I+)printf(“%5s%10s”,stui.num, stui.name);for(j=0;j3;j+)printf(“%9d”,stui.scorej);printf(“%8.2fn”,stui.avr);printf(“average=%6.2fn”,average);printf(“The highest score is:%s,score total:%d.”stumaxi.name,max);9.6 编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针,指向字符串开始的空间。New(n)表示分配n个字节的内存空间。解:new函数如下:#define N

11、ULL 0#define NEWSIZE 1000char newbufNEWSIZE;char *newp=newbuf;char *new(int n)if (newp+n=newbuf)&(pnewbuf+NEWSIZE) newp=p;9.8已有a、b亮光链表,每个链表中的结点包括学好、成绩。要求把两个链表合并,按学号升序排列。解: #include#define NULL 0#define LENsizeof(struct student)strut studentlong num;int scor;struct student *next ;struct student listA

12、,listB;int n,sum=0;main()struct student *creat(void);struct student *insert(struct student *,struct student *);void print(struct student *);stuct student *ahead , *bhead,*abh;printf(“ninput list a:n”);ahead=creat();sum=sum+|n;abh=insert(ahead,bhead);print(abh);struct student *creat(void)struct stude

13、nt *p1,*p2,*head;n=0;p1=p2=(struct student *)malloc(LEN);printf(“input number&scores of student:n”);printf(“if number Is 0,stop inputing.n”);scanf(“%ld,%d”,&p1-num,&p1-score);head=NULL;while(p1-num!=0)n=n+1;if(n=1)head=p1;else p2-next =p1;p2=p1;p1=(struct student *)malloc(LEN);scanf(“%ld,%d”,&p1-num

14、,&p1-score);p2-next=NULL;return(head);struct student *insert(struct student *ah,struct student *bh)struct student *pa1 , *pa2,*pb1,*pb2;pa2=pa1=ah;pb2=pb1=bh;do while(pb1-numpa1-num)&(pa1-next!=NULL)pa2=pa1;pa1=pa1-next;if(pb-numnum)if(ah=pa1)ah=pb1;else pa2-next=pb1;pb1=pb1-next;pb2-next=pa1;pa2=pb

15、2;pb2=pb1;while(pa1-next!=NULL)|(pa1=NULL&pb1!=NULL);if(pb1-numpa1-num)&(pa1-next=NULl) ap1-next=pb1;return(ah);void print(struct student *head)struct student *p;printf(“%ld%dn”,p-num,p-score);p=p-next;while(p!=NULL);9.9 13个人围成一圈,从第1个人开始顺序报号1、2、3。凡报到“3”者退出圈子。找出最后留在圈子中的人原来的序号。解:#define N 13struct per

16、sonint number;int nextop;linkN+1;main()int I,count,h;for(I=1;I=N;I+)if(I=N) linki.nextp=1; else linki.nextp=I+1; linki.number=I;printf(“n”);count=0;h=N;printf(“sequence that person2 leave the circle:n”);while(countN-1)I=0; while(I!=3) h=linkh.nextp; if(linkh.number) I+;printf(“%4d”,linkh.number);lin

17、kh.number=0;count+;printf(“nThe last one is”);for(I=1;ii=N;I+) if(linki.number)printf(“%3d”,lini.number);9.10有两个链表a和b,设结点中包含学号、姓名。从1链表中删去与b链表中有相同学号的那些结点。解:#define LA 4#define LB 5#define NULL 0struct studentchar nump6; char name8; struct student *next;ALA,bLB;main()struct student aLA=“101”,”Wang”,“1

18、02”,”LI”,“105”,”zhang”,“106”,”Wei”;struct studentbLB=“103”,”Zhang”,“104”,”Ma”,“105”,”Chen”,“107”,”Guo”,“108”,”Lui”;int I,j;struct student *p, *p1,*p2,*pt,*head1,*head2; head1=a;head2=b;printf(“list a :n”);for(p1=head1,i=1;p1next=a+I;printf(“%8s%8sn”,p1-num,p1-name);p1=p1-next;p-next=NULL;printf(“n l

19、ist b:n”);for(p2=head2,I=1;p2next=b+I;printf(“%8s%8sn”,p2-num,p2-name);p2=pa-next;p-next=NULL;printf(“n”);p1=head1;while(p1!=NULL)p2=head2;while(p2!=NULL&strcmp(p1-num,p2-num)!=0)p2=p2-next;if(strcmp(p1-num,p2-num=0) if(p1=head1) head1=p1-next; else p-next=p1-next;p=p1;p1=p1-next;p1=hedad1;printf“n

20、result:n”;while(p1!=NULL)printf(“%7s %7sn”,p1-num,p1-name);p1=p1-next;9.11建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。解:#define NULL 0 #define LEN sizeof(struct student) struct student char num6; char name8; char sex2; int age; stuct student *next;stu10;main()struct student *p,*pt,*

21、head;int I,length,iage,flag=1;int find=0;while(flag=1)printf(“input length of list(10):”);scanf(“%d”,&length);if(length10)flag=0;for(I=0;Inext=p; pt=p; ptintf(“NO:”); scanf(“%s”,p-num);prntf(“name:”);scanf(“%s”,p-name);printf(“sex:”);scanf(“%s”,p-sex);printf(“age:”);scanf(“%s”,p-age);p-next=NULL;p=h

22、ead;printf(“n NO. name sex agen”);while(p!=NULL)printf(“%4s%8s%6s%6dn”,p-num, p-name, p-sex, p-age); p=p-next; printf(“Input age:”);scanf(“%d”,&iage);pt=head;p=pt;if(pt-age=iage)p=pt-next;head=pt=p;find=1;else pt=pt-next;while(pt!=NULL)if(pt-age=iage)p-next=pt-next;find=1;else p=pt;pt=pt-next; if(!f

23、ind)printf(“Not found%d.”,iage); p=head; printf(“n NO.name sex agen”); while(p!=NULL) printf(“%4s%8s”,p-num,p-name);printf(“%6s%6d”,p-sex,p-age);p=p-next;9.12将一个链表按逆序排列,即将链头当链尾,链尾当链头。解:# define NULL 0struct stuint num; struct stu *next;main()int len=1lstruct stu *p1,*p2,*head,*new,*newhead;p1=p2=hea

24、d=(struct stu * )malloc(sizeof(strct stu);printf(“input number(0:list end):”);scanf(“%d”,&p1-num);while(p1-num!=o)p1=(struct stu*)malloc(sizeof(struct stu);printf(“input number(n:listend):”);scanf(“%d”,&p1-num);if(p1-num=0) p2-next=null;elsep2=next=p1;p2=p1;len+;p1=head;pritnf(“n the original list:n”);doprintf(“%4d”,p1-num);if(p1-next!=NULL)p1=p1-next;while(p1-next!=NULL)p2=p1;p1=p1-next;if(I=0)newhead=new=p1;elsenew=nes-next=p1;p2-next=NULL;printf(nn The new listLn);p1=newhead;for(I=0l;Inum”);p1=p1-next,printf(“n”);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1