指针

一、PTA实验作业

题目1:6-2 移动字母

1. 本题PTA提交列表

2. 设计思路

 先增长数组s[]的长度,把前三个字符移到原数组的后面,这样得到数组的长度就比原来多3,再将这个增长后的数组从头开始把后面的数往前移,如s[0]=s[3],s[1]=s[4]。最后将后三位定义为空字符,这样得到新的数组实现将s[]前三位移到最后。

 

3.本题调试过程碰到问题及PTA提交列表情况说明

一开始在Dev上运行时忘记了最后一个步骤,没有将后三位定义为空字符,这样导致输出结果错误,添上后即正确。

4.代码截图

题目2:6-6 使用函数实现字符串部分复制

1. 本题PTA提交列表

2. 设计思路

首先计算字符串t的长度len,若输入的m>len,则s应该为空串;若m<=len,先找到字符串t中m那个位置,将从那个位置起一直到后面的字符都赋给字符串s,最后输出字符串s。

 3.本题调试过程碰到问题及PTA提交列表情况说明

 

错误原因:1.没有判断输入的m是否大于字符串t的长度。

     2.题意理解错误,题目要求将输入字符串t中从第m个字符开始的全部字符复制到字符串s中,s没有原有字符或若有也应该被覆盖。

     3.定义的字母太少易混乱。

 4.代码截图

题目3:6-11 查找子串

1. 本题PTA提交列表

2. 设计思路

在字符串s中查找子串t,从s的第一个字符开始判断是否与t的首字符相同,若找到相同,记下s字符串中这个字符的首地址op,从s的这个字符开始继续往下与t的后面字符依次比较,若相同,返回op,若没找到相同,返回NULL。

 

3.本题调试过程碰到问题及PTA提交列表情况说明

 

错误原因:对循环的判断不够准确,代码第9行把z放在第二个循环中,使得每次z值都没有改变,导致错误。

调试:把第9行移到第二个for循环上面即可。

 

 4.代码截图

二、同学代码结对互评

1.互评同学名字

罗艺芳

2.我的代码,同学的代码截图

6-2 移动字母

 罗艺芳的代码:

 

我的代码:

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

(1)我的代码是把前三个字符移到原数组的后面,再将这个增长后的数组从头开始把后面的数往前移。罗艺芳的数组是先取出前三个字符,再把后面的字符往前移,最后把取出的前三位补到最后。

(2)我们代码的不同之处在于罗艺芳有进行赋值取出,我的是将字符后移。

(3)我们的代码所用的方法各有特点,简易度也差不多。

三、截图本周题目集的PTA最后排名。

四、本周学习总结
1.你学会了什么?

(1).懂得了可以利用指针来实现存储空间的动态分配.

(2).定义指针与其它类型变量的不同之处在于指针定义前需加上*,且定义多个指针变量时,每个指针变量前都需加上*.

(3).强制类型转换,如(int *)可避免编译错误,指针无赋初值处理时,做好将给它赋NULL值.

(4).数组名a本身就是地址常量,以下语句等价:p=a;  p=&a[0];

2.本周的内容,你还不会什么?

 对与内存动态分配有关的一些函数还不太理解,如不太理解malloc()与calloc()、realloc()的差别。

3.指针考试总结

 要更加熟悉指针与其他变量的差别,打代码时经常搞混,因此还需多加练习。

 

 

posted on 2018-01-20 09:34  bingyan  阅读(243)  评论(0编辑  收藏  举报