C语言程序设计第四版第九章答案 谭浩强.docx
《C语言程序设计第四版第九章答案 谭浩强.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第四版第九章答案 谭浩强.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第九章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=date.day+59; break; c
2、ase 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=date.day+334; break;
3、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 sum;switch(data.month
4、)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; breakcase 10:sum=date1.d
5、ay+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 score of student %d:n”,I
6、+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.scorej); print(“n”);9.4在上
7、题的基础上,编写一个函数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+)printf(“score%d:”,j+)
8、; 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 student %d:n”,I+1);
9、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;IN;I+)printf(“%5s%10
10、s”,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 NULL 0#define NEWSIZE
11、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,listB;int n,sum=0;ma
12、in()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 student *p1,*p2,*head;n=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计第四版第九章答案 谭浩强 语言程序设计 第四 第九 答案
限制150内