指针实验报告 指针实验报告 一、题目分析 题目一 6-1 计算两数的和与差(10 分) 本题要求实现一个计算输入的两数的和与差的简单函数。 函数接口定义: void sum_diff( float op1, float op2, float *psum, float *pdiff ); 其中op1和op2是输入的两个实数,*psum和*pdiff是计算得出的和与差。 裁判测试程序样例: #include <stdio.h> void sum_diff( float op1, float op2, float *psum, float *pdiff ); int main() { float a, b, sum, diff; scanf(“%f %f”, &a, &b); sum_diff(a, b, &sum, &diff); printf(“The sum is %.2f The diff is %.2f ”, sum, diff); return 0; } /* 你的代码将被嵌在这里 */ 本题PTA提交列表
程序设计思路(流程图) 子函数即进行两个数的相加减……思路简单,所以流程图略…… 最终程序如下: void sum_diff( float op1, float op2, float *psum, float *pdiff ) { *psum=op1+op2;*pdiff=op1-op2;} 总程序如下: #include <stdio.h> void sum_diff( float op1, float op2, float *psum, float *pdiff ); int main() { float a, b, sum, diff; scanf(“%f %f”, &a, &b); sum_diff(a, b, &sum, &diff); printf(“The sum is %.2f The diff is %.2f ”, sum, diff); return 0; } void sum_diff( float op1, float op2, float *psum, float *pdiff ) { *psum=op1+op2;*pdiff=op1-op2;} 3.本题调试结果
4.题目分析 十分简单的运算,只是用直接用指针来解决。也是十分简单的加减法。 题目二 6-4 字符串的连接(15 分) 本题要求实现一个函数,将两个字符串连接起来。 函数接口定义: char *str_cat( char *s, char *t ); 函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址。 裁判测试程序样例: #include <stdio.h> #include <string.h> #define MAXS 10 char *str_cat( char *s, char *t ); int main() { char *p; char str1[MAXS+MAXS] = {‘0’}, str2[MAXS] = {‘0’}; scanf(“%s%s”, str1, str2); p = str_cat(str1, str2); printf(“%s %s ”, p, str1); return 0; } /* 你的代码将被嵌在这里 */ 本题PTA提交列表
程序设计思路(流程图) 用strcat函数将字符串s,t连接起来 流程图略 最终程序如下: char *str_cat( char *s, char *t ) { char*p; p=strcat(s,t);return(p); } 总程序如下: #include <stdio.h> #include <string.h> #define MAXS 10 char *str_cat( char *s, char *t ); int main() { char *p; char str1[MAXS+MAXS] = {‘0’}, str2[MAXS] = {‘0’}; scanf(“%s%s”, str1, str2); p = str_cat(str1, str2); printf(“%s %s ”, p, str1); return 0; } char *str_cat( char *s, char *t ) { char*p; p=strcat(s,t);return(p); } 3.本题调试结果
4.题目讨论 这题表面上并没有使用指针,实则采用了下标法来引用数组素。这题与上一题比较,比较有难度。用数组能更快的解决问题。将前三个素放到另外一个数组中,然后对数组素进行移动,最后利用刚才的数组把前三个素放到数组的最后,比较有跳跃性。 题目三 6-3 拆分实数的整数与小数部分(15 分) 本题要求实现一个拆分实数的整数与小数部分的简单函数。 函数接口定义: void splitfloat( float x, int *intpart, float *fracpart ); 其中x是被拆分的实数(0≤x<10000),*intpart和*fracpart分别是将实数x拆分出来的整数部分与小数部分。 裁判测试程序样例: #include <stdio.h> void splitfloat( float x, int *intpart, float *fracpart ); int main() { float x, fracpart; int intpart; scanf(“%f”, &x); splitfloat(x, &intpart, &fracpart); printf(“The integer part is %d ”, intpart); printf(“The fractional part is %g ”, fracpart); return 0; } /* 你的代码将被嵌在这里 */ 本题PTA提交列表
程序设计思路(流程图) 就是把小数部分跟整数部分分开 整数部分就是把float 型强制转换成int 型、因为定义的整数类型的指针是int 型的,所以直接 *intpart=x;就可以了 小数部分 用原来的数减掉整数部分 流程图略 最终程序如下: void splitfloat( float x, int *intpart, float *fracpart ) { *intpart=x; *fracpart=x-*intpart; } 总程序如下: #include <stdio.h> void splitfloat( float x, int *intpart, float *fracpart ); int main() { float x, fracpart; int intpart; scanf(“%f”, &x); splitfloat(x, &intpart, &fracpart); printf(“The integer part is %d ”, intpart); printf(“The fractional part is %g ”, fracpart); return 0; } void splitfloat( float x, int *intpart, float *fracpart ) { *intpart=x; *fracpart=x-*intpart; } 本题调试结果
题目讨论 本题就是数字类型转换的基本运算,考察的是指针、函数转换的基本类型。 二、同学代码互评 三、总结 我学到了什么? 指针这章 我学会了指针的基本算法,基本内容。*P指向一个数,p是该数的地址,等等较易出错的基本知识都已完全掌握。 我还有什么不会? 在指针这一章,并没有许多知识点,但在我看来他的应用确是一个难点。我掌握了基本知识,比较基本的题型,却不会用指针编写较为复杂的程序。没有办法把指针运用的炉火纯青,所以在这次的实验报告中我选择的都是比较基础的题目,没有什么特别大的难度。水平有待提高!
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/87712.html