C程序设计(谭浩强)课后习题答案选讲.ppt
《C程序设计(谭浩强)课后习题答案选讲.ppt》由会员分享,可在线阅读,更多相关《C程序设计(谭浩强)课后习题答案选讲.ppt(16页珍藏版)》请在装配图网上搜索。
Unit11 CLanguageProgram 11 2 写一个函数days 实现上面的计算 由主函数将年 月 日传递给days函数 计算后将日数传回主函数输出 解法一 structy m d 定义结构体 intyear intmonth intday date intdays structy m ddate1 形参date1为结构体structy m d类型 intsum switch data month case1 sum date1 day break case2 sum date1 day 31 break case3 sum date1 day 59 break case4 sum date1 day 90 break case5 sum date1 day 120 break case6 sum date1 day 151 break case7 sum date1 day 181 break case8 sum date1 day 212 break case9 sum date1 day 243 breakcase10 sum date1 day 273 breakcase11 sum date1 day 304 breakcase12 sum date1 day 334 break If date1 year 4 0 注意 在main函数中的printf函数用days date 调用days函数 其返回值就是天数 解法二 structy m d 定义结构体 intyear intmonth intday date voidmain intdays int int int 对days函数的声明inti day sum printf Inputyear month day scanf d d d for i 1 i 3 day sum 1 returnday sum 11 5 有10个学生 每个学生的数据包括学号 姓名 3门课的成绩 从键盘输入10个学生的数据 要求输出3门课的总平均成绩 以及最高分的学生的数据 包括学号 姓名 3门课成绩 平均分 解 N S图如下图变量说明 max 当前最好成绩 maxi 当前最好成绩对应的下标序号 sum 第i个学生的总成绩 defineN10structstudent charnum 6 charname 8 intscore 4 floatavr stu N main inti j max maxi sum floataverage 输入 for i 0 i N i printf nInputscoresofstudent d n i 1 printf NO scanf s stu i num printf name scanf s stu i name for j 0 j 3 j printf score d j 1 scanf d if sum max max sum maxi i average N 打印 printf NO namescore1score2score3average n for i 0 i N i printf 5s 10s stu i num stu i name for j 0 j 3 j printf 9d stu i score j printf 8 2f n stu i avr printf average 6 2f n average printf Thehighestscoreis s scoretotal d stu maxi name max 11 6 编写一个函数new 对n个字符开辟连续的存储空间 此函数应返回一个指针 指向字符串开始的空间 New n 表示分配n个字节的内存空间 解 new函数是分配n个连续字符的存储区 为此 应先开辟一个足够大的连续存储区 设置字符数组newbuf 1000 new函数将在此上进行操作 newp是指向可用存储区的起始地址的指针 每当请求new开出n个字符的存储区时 要先检查一下newp为newp n 指向下一次可用空间的开始地址 若存储不够分配 则返回NULL new函数如下 defineNULL0 defineNEWSIZE1000charnewbuf NEWSIZE char newp newbuf char new intn 定义new函数 if newp n newbuf NEWSIZE newp newp n return newp n elsereturn NULL 11 7 写一函数free 将上题用new函数占用的空间释放 Free p 表示将p 地址 指向的单元以后的内存段释放 解 free的作用是将newp得值改为p的值 defineNull0 defineNEWSIZE1000charnewbuf NEWSIZE char newp newbuf free char p if p newbuf 11 8 已有a b两个链表 每个链表中的结点包括学好 成绩 要求把两个链表合并 按学号升序排列 解 include defineNULL0 defineLENsizeof structstudent strutstudent longnum intscor structstudent next structstudentlistA listB intn sum 0 main structstudent creat void 函数声明 structstudent insert structstudent structstudent 函数声明 voidprint structstudent 函数声明 stuctstudent ahead bhead abh printf ninputlista n ahead creat 调用creat函数 输入链表a printf ninputlistb n bhead creat 调用creat函数 输入链表b sum sum n abh insert ahead bhead 调用insert函数 将两个链表合并 print abh 输出合并后的链表 structstudent creat void 建立链表的函数 structstudent p1 p2 head n 0 p1 p2 structstudent malloc LEN printf inputnumber head NULL while p1 num 0 n n 1 if n 1 head p1 elsep2 next p1 p2 p1 p1 structstudent malloc LEN scanf ld d If pb numnum if ah pa1 ah pb1 elsepa2 next pb1 pb1 pb1 next pb2 next pa1 pa2 pb2 pb2 pb1 while pa1 next NULL pa1 NULL- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 谭浩强 课后 习题 答案
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文