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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

游洪跃的C语言程序设计第9章 习题解答.docx

1、游洪跃的C语言程序设计第9章 习题解答第9章 习题解答一、选择题1以下程序:/* 文件路径名:ex9_1_1main.c */#include /* 标准输入/输出头文件 */#include /* 字符串头文件 */int main(int argc, char *argv) /* 主函数main() */ int n = 0, i; /* 定义变量 */ for (i = 1; i next=q-next; B)p-next=p-next-next;C)p-next=r; D)p=q-next;解析:要将q所指结点从链表中删除,同时要保持链表的连续,应该p-next=r,由于q-next,

2、 p-next-next都指向r,因此p-next=q-next,p-next=p-next-next都完成同样的的操作。也就是选项A, B, C都能完成指定操作。选项D的p=q-next,只是将指针p指向了r,不能完成指定的操作。因此正确选项是Do答案:D二、填空题1以下程序的输出结果是 。/* 文件路径名:ex9_2_1main.c */#include /* 标准输入/输出头文件 */#include /* 字符串头文件 */char *fun(char *p) return p + strlen(p) / 2; int main(void) /* 主函数main() */ char *

3、str = abcdefgh; /* 定义字符串 */ str = fun(str); /* 调用函数fun() */ puts(str); /* 输出str */ return 0; /* 返回值0, 返回操作系统 */解析:函数fun()返回指向参数字符串的后半部分的指针,也就是程序功能是输出字符串的后半部分,所以输出为efgh。答案:efgh2已有定义“double *p;”,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元 。解析:malloc函数的调用形式为malloc(size),函数用来分配size个字节的存储区,返回一个指向存储区首地址的基类型为void

4、的地址。题目要求双精度类型指针p指向一个双精度类型的动态存储单元,需利用sizeof运算符来求得数据类型所占字节数,空白处应填“p=(double*)mal loc(sizeof(double)”。答案:p=(double *)malloc(sizeof(double)三、编程题*1编写一个求带头结点的线性链表的长度的函数。参考程序:/* 文件路径名:ex9_3_1main.c */#include /* 包含库函数printf()所需要的信息 */#include /* 包含库函数system()所需要的信息 */#include /* 动态存储分配头文件 */typedef int Ele

5、mType; typedef struct Node /* 线性链表结点的结构描述 */ ElemType data; /* 数据成员 */ struct Node *next; /* 指针成员 */LNode;int Length(LNode *head); /* 求线性表长度 */void CreateLinkList(LNode *head); /* 建立线性链表 */void DisplayLinkList(LNode *head); /* 显示线性链表 */int main(void) /* 主函数main() */ LNode *head; /* 定义链表头指针 */ /* 生成空

6、线性链表 */ head = (LNode *) malloc(sizeof(LNode); /* 分配存储空间 */ head-next = NULL; /* 空链表头结点后继为空 */ CreateLinkList(head); /* 建立线性链表 */ DisplayLinkList(head); /* 显示线性链表 */ printf(长度为%dn, Length(head); /* 输出长度 */ system(PAUSE); /* 调用库函数system( ),输出系统提示信息 */ return 0; /* 返回值0, 返回操作系统 */int Length(LNode *hea

7、d) /* 求线性表长度 */ LNode *p = head-next; /* p第向第一个元素结点 */ int len = 0; /* 线性链表长度 */ while (p != NULL) /* p指向非空结点 */ p = p-next; /* p向向下一结点 */ len+; /* 元素个数自加1 */ return len; /* 返回len */void CreateLinkList(LNode *head) /* 建立线性链表 */ LNode *p, *rear = head; /* 空线性链表的表头与表尾都指向头结点 */ ElemType x; /* 定义变量x */

8、printf(输入数据元素值x,当x=0时退出:); /* 提示信息 */ scanf(%d, &x); /* 输入数据元素值x */ while (x != 0) /* 循环建立线生链表 */ p = (LNode *) malloc(sizeof(LNode); /* 分配存储空间 */ p-data = x; /* 数据元素值为x */ p-next = NULL; /* 新追加结点为尾结点,后继为空 */ rear-next = p; /* 新追加的结点在最后,也就是rear的后继 */ rear = p; /* 新追加的结点为新的表尾,rear指向新表尾 */ scanf(%d, &

9、x); /* 输入数据元素值x */ void DisplayLinkList(LNode *head) /* 显示线性链表 */ LNode *p = head-next; /* p指向线性表的第一个结点 */ printf(线性链表:); /* 提示信息 */ while (p != NULL) /* p分别指向各元素 */ printf(%d , p-data); /* 显示元素值 */ p = p-next; /* p指向下一元素 */ printf(n); /* 换行 */*2通过变长参数实现求n个数的积。参考程序:/* 文件路径名:ex9_3_2main.c */#include

10、/* 标准输入/出头文件 */#include /* 包含库函数system()所需要的信息 */#include /* 变长参数头文件 */int Multi(int n, .) /* 参数n表示要求各的元素个数 */ int m = 1, i; /* 定义变量 */ va_list al; /* 变长参数变量 */ va_start(al, n); /* 初始化va_list声明的变量al */ for (i = 1; i = n; i+) m *= va_arg(al, int); /* 取出变长参数 */ va_end(al); /* 结束变长参数的引用 */ return m; /*

11、 返回乘积 */int main(void) /* 主函数main() */ int x = 12, y = 12, z = 18, u = 8, v = 9, w = 16; /* 定义变量 */ printf(x = %dny = %dnz = %dnu = %dnv = %dnw = %dn, x, y, z, u, v, w); /* 输出变量的值 */ printf(x, y与z的积是%d.n, Multi(3, x, y, z); /* 输出Multi(3,x,y,z)的值 */ printf(u, v与w的积是%d.n, Multi(3, u, v, w); /* 输出Multi

12、(3,u,v,w)的值 */ printf(x, y, z, u, v与w的积是%d.n, Multi(6, x, y, z, u, v, w); /* 输出Multi(6,x,y,z,u,v,w)的值 */ system(PAUSE); /* 调用库函数system( ),输出系统提示信息 */ return 0; /* 返回值0, 返回操作系统 */*3用命令行参数编程实现显示文本文件内容。参考程序:/* 文件路径名:ex9_3_3main.c */#include /* 标准输入/出头文件 */#include /* 包含库函数system()所需要的信息 */int main(int

13、argc, char *argv) /* 主函数main() */ FILE *fp; /* 定义文件指针变量 */ char c; /* 定义字符变量c */ if (argc != 2) /* 命令行参数不为3 */ printf(用法:ShowFile 文件名n); else /* 命令行参数为3 */ if (fp = fopen(argv1, r) = NULL) printf(文件%s打不开!n, argv1); /* 错误信息 */ system(PAUSE); /* 调用库函数system( ),输出系统提示信息 */ exit(1); /* 退出程序 */ c = fgetc

14、(fp); /* 从源文件中读一字符 */ while (!feof(fp) putchar(c); /* 显示c */ c = fgetc(fp); /* 从源文件中读一字符 */ fclose(fp); /* 关闭文件 */ system(PAUSE); /* 调用库函数system( ),输出系统提示信息 */ return 0; /* 返回值0, 返回操作系统 */*4创建一个不带头结点的链表,并按输入顺序相反的次序各数据的值。参考程序:/* 文件路径名:ex9_3_4main.c */#include /* 标准输入/出头文件 */#include /* 包含库函数system()所

15、需要的信息 */#include /* 动态存储分配头文件 */typedef int ElemType; typedef struct Node /* 线性链表结点的结构描述 */ ElemType data; /* 数据成员 */ struct Node *next; /* 指针成员 */LNode;void CreateLinkList(LNode *ppHead); /* 建立线性链表 */void DisplayLinkList(LNode *head); /* 显示线性链表 */int main(void) /* 主函数main() */ LNode *head = NULL; /

16、* 定义链表头指针 */ CreateLinkList(&head); /* 建立线性链表 */ DisplayLinkList(head); /* 显示线性链表 */ system(PAUSE); /* 调用库函数system( ),输出系统提示信息 */ return 0; /* 返回值0, 返回操作系统 */void CreateLinkList(LNode *ppHead) /* 建立线性链表 */ LNode *p; /* 定义指针 */ ElemType x; /* 定义变量x */ printf(输入数据元素值x,当x=0时退出:); /* 提示信息 */ scanf(%d, &

17、x); /* 输入数据元素值x */ while (x != 0) /* 循环建立线性链表 */ p = (LNode *) malloc(sizeof(LNode); /* 分配存储空间 */ p-data = x; /* 数据元素值为x */ p-next = *ppHead; /* 新结点插在链表的最前面 */ *ppHead = p; /* 新结点为新的头结点 */ scanf(%d, &x); /* 输入数据元素值x */ void DisplayLinkList(LNode *head) /* 显示线性链表 */ LNode *p = head; /* p指向线性表的第一个结点 *

18、/ printf(线性链表:); /* 提示信息 */ while (p != NULL) /* p分别指向各元素 */ printf(%d , p-data); /* 显示元素值 */ p = p-next; /* p指向下一元素 */ printf(n); /* 换行 */*5创建一个不带头结点的链表,采用递函数显示一个链表的各数据成员的值。参考程序:/* 文件路径名:ex9_3_5main.c */#include /* 标准输入/出头文件 */#include /* 包含库函数system()所需要的信息 */#include /* 动态存储分配头文件 */typedef int El

19、emType; typedef struct Node /* 线性链表结点的结构描述 */ ElemType data; /* 数据成员 */ struct Node *next; /* 指针成员 */LNode;void CreateLinkList(LNode *ppHead); /* 建立线性链表 */void DisplayLinkList(LNode *head); /* 显示线性链表 */int main(void) /* 主函数main() */ LNode *head = NULL; /* 定义链表头指针 */ CreateLinkList(&head); /* 建立线性链表

20、*/ DisplayLinkList(head); /* 显示线性链表 */ system(PAUSE); /* 调用库函数system( ),输出系统提示信息 */ return 0; /* 返回值0, 返回操作系统 */void CreateLinkList(LNode *ppHead) /* 建立线性链表 */ LNode *p, *rear = *ppHead; /* 空线性链表的表头与表尾都指向头结点 */ ElemType x; /* 定义变量x */ printf(输入数据元素值x,当x=0时退出:); /* 提示信息 */ scanf(%d, &x); /* 输入数据元素值x

21、*/ while (x != 0) /* 循环建立线性链表 */ p = (LNode *) malloc(sizeof(LNode); /* 分配存储空间 */ p-data = x; /* 数据元素值为x */ p-next = NULL; /* 新追加结点为尾结点,后继为空 */ if (rear = NULL) /* 空线性链表 */ *ppHead = rear = p; /* 头尾指针都指向同一个结点 */ else rear-next = p; /* 新追加的结点在最后,也就是rear的后继 */ rear = p; /* 新追加的结点为新的表尾,rear指向新表尾 */ sca

22、nf(%d, &x); /* 输入数据元素值x */ void DisplayLinkList(LNode *head) /* 显示线性链表 */ if (head != NULL) /* 线性链表非空 */ printf(%d , head-data); /* 显示元素值 */ DisplayLinkList(head-next); /* 递归调用 */ else /* 空线性链表 */ printf(n); /* 换行 */ *6用不带头结点的链表存储栈,分别采用递归函数建立栈及显示一个栈的各数据成员的值。参考程序:/* 文件路径名:ex9_3_6main.c */#include /*

23、标准输入/出头文件 */#include /* 包含库函数system()所需要的信息 */#include /* 动态存储分配头文件 */typedef int ElemType; typedef struct Node /* 链栈结点的结构描述 */ ElemType data; /* 数据成员 */ struct Node *next; /* 指针成员 */LNode;void CreateLinkStack(LNode *ppTop); /* 建立链栈 */void DisplayLinkStack(LNode *top); /* 显示链栈 */int main(void) /* 主函数main() */ LNode *top = NULL; /* 定义栈顶指针 */ printf(输入数据元素值x,当x=0时退出:); /* 提示信息 */ CreateLinkStack(&top); /* 建立链栈 */ DisplayLinkStack(top); /* 显示链栈 */ system(PAUSE); /* 调用库函数system( ),输出系统提示信息 */ return 0; /* 返回值0, 返回操作系统 */

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

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