指针
#一
题目1.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\nThe diff is %.2f\n", sum, diff); return 0; }
1. 本题PTA提交列表
本题代码:
2. 设计思路:
![](https://images2017.cnblogs.com/blog/1284894/201801/1284894-20180115001528769-2072778735.png)
设计两个指针分别指向输入的两个数字,分别提取指针所指向地址中存储的两个数进行加减。
3.本题调试过程碰到问题及PTA提交列表情况说明
1.如何提取地址中存储的数据2.指针是否可以进行运算
![](https://images2017.cnblogs.com/blog/1284894/201801/1284894-20180115002107082-1162455355.png)
第一次编译错误,只要求写可以嵌入的子函数,主函数部分重复导致编译错误。
题目2. 使用函数实现字符串部分复制(20 分)
本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。
函数接口定义:
void strmcpy( char *t, int m, char *s );
函数strmcpy
将输入字符串char *t
中从第m
个字符开始的全部字符复制到字符串char *s
中。若m
超过输入字符串的长度,则结果字符串应为空串。
1. 本题PTA提交列表
本题代码
2. 设计思路
设计两个指针分别指向不同的地址(两个数组),当输入的数n大于输入字符长度时,则返回空值,否则,从一个数组中第n个数开始拷贝至第二个数组。
3.本题调试过程碰到问题及PTA提交列表情况说明
问题:空指针的表达方式,如何进行替换
第一次提交
s=NULL错误,应该*s=NULL
第二次提交
当m与长度相等时,并不可以返回空指针,于是调用memset函数,将s数组中输入字符后的所有元素用0代替,这样当m等于长度时,就不再使s是空指针
题目
6-7 输出月份英文名(15 分)
本题要求实现函数,可以返回一个给定月份的英文名称。
函数接口定义:
char *getmonth( int n );
函数getmonth
应返回存储了n
对应的月份英文名称的字符串头指针。如果传入的参数n
不是一个代表月份的数字,则返回空指针NULL。
1.本题pta提交列表
![](https://images2017.cnblogs.com/blog/1284894/201801/1284894-20180119210351849-597138155.png)
本题代码
2.设计思路
![](https://images2017.cnblogs.com/blog/1284894/201801/1284894-20180119220958365-428475465.png)
分别设计十二个指针分别对应一个月份,满足条件情况下返回指针指向的地址即可。
3.本题调试过程碰到问题及PTA提交列表情况说明
问题:怎么赋给指针所指向地址数据。
第一次提交
![](https://images2017.cnblogs.com/blog/1284894/201801/1284894-20180119221825553-1725542278.png)
编译错误,不能直接将*s直接赋值月份,要先定义指针的类型为char。
第二次提交
![](https://images2017.cnblogs.com/blog/1284894/201801/1284894-20180119222308849-1071124292.png)
返回值错误,应返回数组中的 s[n-1]。
#二、代码互评
互评同学姓名:李彦婵
题目
7-2 在数组中查找指定元素(10 分)
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数 n (1<n<=10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,如果找到则输出相应元素的最小下标,否则输出"Not found"。
要求定义并调用函数search(list, n, x),它的功能是在数组list中查找元素x,若找到则返回相应元素的最小下标,否则返回-1,函数形参 list 的类型是整型指针,形参n和x的类型是int,函数的类型是int。
输出格式语句:printf("index = %d\n", );
输入输出示例:括号内为说明,无需输入输出
代码对比:
我的:
彦婵的:
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
我的是数组结构,看起来较为复杂。彦婵用的是指针结构,但是所用的原理相同,在用的是同种原理思路的情况下我更喜欢自己的程序,因为使用数组结构比较简单易懂,思路清晰,使用指针比较容易糊涂,在 返回值的时候也比较不易懂,所以我更喜欢自己的程序。
三、PTA排名截图
#四、本周学习总结
1.你学会了什么?
2.本周的内容,你还不会什么?
指针传值问题不是很清楚,容易传错,定义的时候也比较糊涂,容易出问题。
3.其他总结
需要多做题,想清楚指针的变换问题,争取搞懂链表:(