c语言-C程序设计(第四版)谭浩强_课后习题答案第8章.doc
《c语言-C程序设计(第四版)谭浩强_课后习题答案第8章.doc》由会员分享,可在线阅读,更多相关《c语言-C程序设计(第四版)谭浩强_课后习题答案第8章.doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C程序设计(第四版)谭浩强_课后习题答案第8章第8章善于利用指针2208.1指针是什么2208.2指针变量2228.2.1使用指针变量的例子2228.2.2怎样定义指针变量2238.2.3怎样引用指针变量2248.2.4指针变量作为函数参数2268.3通过指针引用数组2308.3.1数组元素的指针2308.3.2在引用数组元素时指针的运算2318.3.3通过指针引用数组元素2338.3.4用数组名作函数参数2378.3.5通过指针引用多维数组2458.4通过指针引用字符串2558.4.1字符串的引用方式 2558.4.2字符指针作函数参数2598.4.3使用字符指针变量和字符数组的比较2638
2、.5指向函数的指针2668.5.1什么是函数指针2668.5.2用函数指针变量调用函数2668.5.3怎样定义和使用指向函数的指针变量2688.5.4用指向函数的指针作函数参数2708.6返回指针值的函数2748.7指针数组和多重指针2778.7.1什么是指针数组 2778.7.2指向指针数据的指针2808.7.3指针数组作main函数的形参2828.8动态内存分配与指向它的指针变量2858.8.1什么是内存的动态分配2858.8.2怎样建立内存的动态分配2858.8.3void指针类型 2878.9有关指针的小结288习题2918-1#include int main() void swap
3、(int *p1,int *p2); int n1,n2,n3; int *p1,*p2,*p3; printf(input three integer n1,n2,n3:); scanf(%d,%d,%d,&n1,&n2,&n3); p1=&n1; p2=&n2; p3=&n3; if(n1n2) swap(p1,p2); if(n1n3) swap(p1,p3); if(n2n3) swap(p2,p3); printf(Now,the order is:%d,%d,%dn,n1,n2,n3); return 0; void swap(int *p1,int *p2) int p; p=*
4、p1; *p1=*p2; *p2=p; #include #include int main()void swap(char *,char *); char str120,str220,str320; printf(input three line:n); gets(str1); gets(str2); gets(str3); if(strcmp(str1,str2)0) swap(str1,str2); if(strcmp(str1,str3)0) swap(str1,str3); if(strcmp(str2,str3)0) swap(str2,str3); printf(Now,the
5、order is:n); printf(%sn%sn%sn,str1,str2,str3); return 0; void swap(char *p1,char *p2) char p20; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); 8-3#include int main() void input(int *); void max_min_value(int *); void output(int *); int number10; input(number); max_min_value(number); output(number); return
6、 0; void input(int *number) int i; printf(input 10 numbers:); for (i=0;i10;i+) scanf(%d,&numberi); void max_min_value(int *number) int *max,*min,*p,temp; max=min=number; for (p=number+1;p*max) max=p; else if (*p*min) min=p; temp=number0;number0=*min;*min=temp; if(max=number) max=min; temp=number9;nu
7、mber9=*max;*max=temp; void output(int *number) int *p; printf(Now,they are: ); for (p=number;pnumber+10;p+) printf(%d ,*p); printf(n); 8-4#include int main() void move(int 20,int,int); int number20,n,m,i; printf(how many numbers?); scanf(%d,&n); printf(input %d numbers:n,n); for (i=0;in;i+) scanf(%d
8、,&numberi); printf(how many place you want move?); scanf(%d,&m); move(number,n,m); printf(Now,they are:n); for (i=0;iarray;p-) *p=*(p-1); *array=array_end; m-; if (m0) move(array,n,m); 8-5#include int main()int i,k,m,n,num50,*p; printf(ninput number of person: n=); scanf(%d,&n); p=num; for (i=0;in;i
9、+) *(p+i)=i+1; i=0; k=0; m=0; while (mn-1) if (*(p+i)!=0) k+; if (k=3) *(p+i)=0; k=0; m+; i+; if (i=n) i=0; while(*p=0) p+; printf(The last one is NO.%dn,*p); return 0;8-6#include int main()int length(char *p);int len;char str20;printf(input string: );scanf(%s,str);len=length(str);printf(The length
10、of string is %d.n,len);return 0;int length(char *p) int n; n=0; while (*p!=0) n+; p+; return(n);8-7#include #include int main()void copystr(char *,char *,int); int m; char str120,str220; printf(input string:); gets(str1); printf(which character that begin to copy?); scanf(%d,&m); if (strlen(str1)m)
11、printf(input error!); else copystr(str1,str2,m); printf(result:%sn,str2); return 0;void copystr(char *p1,char *p2,int m) int n; n=0; while (nm-1) n+; p1+; while (*p1!=0) *p2=*p1; p1+; p2+; *p2=0;8-8#include int main()int upper=0,lower=0,digit=0,space=0,other=0,i=0;char *p,s20;printf(input string: );
12、while (si=getchar()!=n) i+;p=&s0;while (*p!=n) if (A=*p) & (*p=Z) +upper; else if (a=*p) & (*p=z) +lower; else if (*p= ) +space; else if (*p=0) +digit; else +other; p+; printf(upper case:%d lower case:%d,upper,lower);printf( space:%d digit:%d other:%dn,space,digit,other);return 0;8-9#include int mai
13、n()void move(int *pointer); int a33,*p,i; printf(input matrix:n); for (i=0;i3;i+) scanf(%d %d %d,&ai0,&ai1,&ai2); p=&a00; move(p); printf(Now,matrix:n); for (i=0;i3;i+) printf(%d %d %dn,ai0,ai1,ai2); return 0; void move(int *pointer) int i,j,t; for (i=0;i3;i+) for (j=i;j3;j+) t=*(pointer+3*i+j); *(p
14、ointer+3*i+j)=*(pointer+3*j+i); *(pointer+3*j+i)=t; 8-10-1#include int main()void change(int *p); int a55,*p,i,j; printf(input matrix:n); for (i=0;i5;i+) for (j=0;j5;j+) scanf(%d,&aij); p=&a00; change(p); printf(Now,matrix:n); for (i=0;i5;i+) for (j=0;j5;j+) printf(%d ,aij); printf(n); return 0;void
15、 change(int *p) int i,j,temp; int *pmax,*pmin; pmax=p; pmin=p; for (i=0;i5;i+) for (j=i;j5;j+) if (*pmax*(p+5*i+j) pmin=p+5*i+j; temp=*(p+12); *(p+12)=*pmax; *pmax=temp; temp=*p; *p=*pmin; *pmin=temp; pmin=p+1; for (i=0;i5;i+) for (j=0;j*(p+5*i+j) pmin=p+5*i+j; temp=*pmin; *pmin=*(p+4); *(p+4)=temp;
16、 pmin=p+1; for (i=0;i5;i+) for (j=0;j*(p+5*i+j)pmin=p+5*i+j; temp=*pmin; *pmin=*(p+20); *(p+20)=temp; pmin=p+1; for (i=0;i5;i+) for (j=0;j*(p+5*i+j) pmin=p+5*i+j; temp=*pmin; *pmin=*(p+24); *(p+24)=temp; 8-10-2#include int main()void change(int *p); int a55,*p,i,j; printf(input matrix:n); for (i=0;i
17、5;i+) for (j=0;j5;j+) scanf(%d,&aij); p=&a00; change(p); printf(Now,matrix:n); for (i=0;i5;i+) for (j=0;j5;j+) printf(%d ,aij); printf(n); return 0;void change(int *p) /交换函数 int i,j,temp; int *pmax,*pmin; pmax=p; pmin=p; for (i=0;i5;i+) /找最大值和最小值的地址,并赋给 pmax,pmin for (j=i;j5;j+) if (*pmax*(p+5*i+j)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序设计 第四 谭浩强 课后 习题 答案
限制150内