C语言程序设计(第3版)何钦铭 颜 晖 第11章 指针进阶

C语言程序设计(第3版)何钦铭 颜 晖 第11章 指针进阶

ID:38979311

大小:89.00 KB

页数:18页

时间:2019-06-22

C语言程序设计(第3版)何钦铭 颜 晖 第11章  指针进阶_第1页
C语言程序设计(第3版)何钦铭 颜 晖 第11章  指针进阶_第2页
C语言程序设计(第3版)何钦铭 颜 晖 第11章  指针进阶_第3页
C语言程序设计(第3版)何钦铭 颜 晖 第11章  指针进阶_第4页
C语言程序设计(第3版)何钦铭 颜 晖 第11章  指针进阶_第5页
资源描述:

《C语言程序设计(第3版)何钦铭 颜 晖 第11章 指针进阶》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第11章指针进阶【练习11-1】如何理解指针数组,它与指针、数组有何关系?为何可以用二级指针数组进行操作?解答:指针数组——存放指针的一个数组。指针数组名也是指向常量二级指针,因为指针数组名总是指向数组的第一个元素。【练习11-2】用指针数组处理多个字符串有何优势?可以直接输入多个字符串给为初始化的指针数组吗?为什么?解答:C语言中字符串的地址是按顺序存放的,用指针指向字符串的首地址,然后取出这个地址里面的值,然后指针加一,取出里面的值,这样就能输出整个字符串了。用指针数组可以接收多个字符串,对这些字符串的操作可以做到相互隔离,一个指针数组的元素作为一个指针对应一个字

2、符串。【练习11-3】参考例11-3,使用二级指针操作改写例11-4中的程序A。解答:#include#includevoidfsort(char**ch,intn);intmain(void){inti;char*pcolor[]={"red","blue","yellow","green","black"};char**ch;ch=pcolor;fsort(ch,5);for(i=0;i<5;i++)printf("%s",*(ch+i));return0;}voidfsort(char**ch,intn){intk,j;ch

3、ar*temp;for(k=1;k0){temp=*(ch+j);*(ch+j)=*(ch+j+1);*(ch+j+1)=temp;}}【练习11-4】改写例11-8中的函数match(),要求返回字符串s中最后一个字符ch的位置(地址)。解答:#includechar*match(char*s,charch);intmain(void){charch,str[80],*p=NULL;printf("PleaseInputthestring:

4、n");scanf("%s",str);getchar();ch=getchar();if((p=match(str,ch))!=NULL)printf("%s",p);elseprintf("NotFound");return0;}char*match(char*s,charch){char*k=NULL;while(*s!=''){if(*s==ch)k=s;s++;}returnk;}【练习11-5】前面章节中介绍的指针变量都可以进行算数运算,请思考:指向函数的指针变量可以进行算术运算吗?解答:函数指针变量不能进行算术运算,这是与数组指针变量不同的。

5、数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而函数指针的移动是毫无意义的。  【练习11-6】运行例11-10,试执行程序中个函数的功能,观察结果。解答:主函数包含选择链表新建、插入、删除和遍历的功能,而新建链表函数则是用链表的方式建立一整套有关学生的信息,插入操作函数则是可以在链表其中添加新的学生信息,删除操作函数则是可以在链表中删除要求删除的学生信息,最后的遍历操作函数则是显示所有的学生信息。【练习11-7】改写例11-10中的函数DelectDoc(),要求删除链表中成绩小于60分的学生结点。解答:structstud_node*DeleteD

6、oc(structstud_node*head,intscore){structstud_node*ptr1,*ptr2;/*要被删除结点为表头结点*/while(head!=NULL&&head->score==score){ptr2=head;head=head->next;free(ptr2);}if(head==NULL)returnNULL;/*要被删除结点为非表头结点*/ptr1=head;ptr2=head->next;while(ptr2!=NULL){if(ptr2->score==score){ptr1->next=ptr2->next;free(

7、ptr2);}elseptr1=ptr2;ptr2=ptr1->next;}returnhead;}【练习11-8】在例11-10的基础上,再编写一个函数UpdateDoc(),实现对链表中某结点信息(成绩)的修改。函数原型为:voidUpdateDoc(structstud_node*head,intnum,intscore),其中,num为需要修改信息的学生学号,score为需要修改的成绩值。解答:#include#include#includestructstud_node{intnum

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。