资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Lab7: 指针姓名学号班级说明: 1. 本次实验内容分两次上机完成;2. 完成以下实验内容后,将本文档改名为“学号_姓名_班级_Lab7.doc”;3. 在15周上机课时提交。实验内容和实验要求(实验指导P148)1.练习题一运行结果截图:2.练习题二运行结果截图:思考题及问题: 答案:不能因为函数中需要用指针来改变主函数中的变量值,如果使用二维数组或行指针则只能返还最大值,无法改变主调函数中的变量值。 案:函数文本(修改部分红色字体标注)#include #include int FindMax(int *p, int m, int n, int *pRow, int *pCol); void main() int *pScore, i, j, m, n, maxScore, row, col; printf(Please enter array size m,n:); scanf(%d,%d, &m, &n); pScore = (int *) calloc(m*n, sizeof (int); if (pScore = NULL) printf(No enough memory!n); exit(0); printf(Please enter the score:n); for (i = 0; im; i+) for (j = 0; jn; j+) scanf(%d, &pScore i*n+j); maxScore = FindMax(pScore, 3, 4, &row, &col); printf(maxScore = %d, number = %dn, maxScore, row+1, col+1); free(pScore); int FindMax(int *p, int m, int n, int *pRow, int *pCol) int i, j, max; max = p0; *pRow = 0; *pCol = 0; for (i = 0; im; i+) for (j = 0; j max) max = pi*n+j; *pRow=i; *pCol=j; return (max); 运行结果截图:3.练习题三运行结果截图:思考题及问题: 答案:系统会报错,程序无法运行 案:试编写strcmp函数,源程序文本:#include int strcmp(char *s1, char *s2)int ret ,i=0;if(!s1|!s2)return s1-s2;while(1)ret=s1i-s2i;if(ret|!s1i)return ret;i+;void main()char a10, b10;gets(a);gets(b);printf(%dn, strcmp(a, b);运行结果截图:4.练习题四运行结果截图:思考题及问题: 答案:不可以因为只有当while语句满足的条件成立时s的值才加1,更改后,无论条件成不成立,s的值都加1,所以不能改。 案:源程序文本(修改部分红色字体标注)#include void findfirst(char *s, char d) while(*s) if(*s=d) *s=*; s+; int main() char string=Oh! day after day.; printf(%sn,string); findfirst(string,d); printf(%sn,string);运行结果截图:5.练习题五运行结果截图:思考题及问题: 案:源程序文本(修改部分红色字体标注)#include double cube(double);double cubee(double);double cubeee(double);double sum(int,double(*p)(double);void main()double(*ptr)(double);int i;printf(请输入编号: );scanf(%d,&i);if(i=0)ptr=cube;elseif(i=1) ptr=cubee;elseif(i=2) ptr=cubeee;printf(sum=%.2lfn,sum(4,ptr);double sum(int n,double(*p)(double)double s=0;int k;for (k=1;k=n;k+)s+=(*p)(1.0/k);return s;double cube(double x) return(x*x*x);double cubee(double x) return(x*x);double cubeee(double x) return(1/x);运行结果截图:6.练习题六运行结果截图:思考题及问题: 案:源程序文本(修改部分红色字体标注)#include #include void main()float *pa,*pb,*pc,a,b,c;if(pa=(float*)malloc(sizeof(float)scanf(%f,pa);elseprintf(malloc for pa is failed!n);if (pb=(float*)malloc(sizeof(float)scanf(%f,pb);elseprintf(malloc for pb is failed!n);if (pc=(float*)malloc(sizeof(float)scanf(%f,pc);elseprintf(malloc for pc is failed!n);if(*pa*pb)a=*pb;elsea=*pa;if(a*pc)a=*pc;if(*pa*pb)b=*pa;elseb=*pb;if(b*pa&*paa)c=*pa;elseif(b*pb&*pba)c=*pb;elsec=*pc;printf(%.2f %.2f %.2fn,a,c,b);运行结果截图: 案:源程序文本(修改部分红色字体标注)#include#includevoid main() float *p,*head,temp; int n,i,j; printf(请输入要排序的整数的个数:n); scanf(%d,&n);head=(float *)calloc(n,2); printf(请输入%d个待排序的整数:n,n); for(p=head;phead+n;p+) scanf(%f,p); for(j=0;jn-1;j+) for(i=0;i*(head+i+1) temp=*(head+i); *(head+i)=*(head+i+1); *(head+i+1)=temp; for(p=head;phead+n;p+) printf(%.2f ,*p);printf(n);运行结果截图:自测练习1.自测练习一源程序文本:#include#includemain() int a4=3,11,8,22; long s=1; int *p=a; for(int i=0;i4;i+) s = s*(*(p+i); printf(各元素之积为%ldn,s);运行结果截图:2.自测练习二源程序文本:#include #include void input(float a34)int i,j;for(i=0;i3;i+)for (j=0;j4;j+)scanf(%f,&aij);void div(float a34,float max_number3)int i,j;for (i=0;i3;i+)for(j=0;j4;j+)aij/=max_numberi;void output(float a34)int i,j;for (i=0;i
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号