一、PTA实验作业
题目1:6-2 求出数组中最大数和次最大数(10 分)
1. 本题PTA提交列表
2. 设计思路
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
在第二部分找次最大值时我把max1初始化为0,然后输出的最大值是5,次最大值是12。调试了发现的我找最大值时没有把第一次找的最大值排除在外,最后要把max1赋值为1才得到正确答案。
题目2:6-5 判断回文字符串(20 分)
1. 本题PTA提交列表
2. 设计思路
定义count并初始值为0,定义循环变量i,j,flag=0;//count用于统计字符串长度
for i=0 to *(s+i)!=\'\\0\'
count每次加1
end i.//求出字符串长度
for i=0 to i<count
如果*(s+i)!=*(s+count-i-1)
则flag=1并结束循环i
end i.
如果前面的循环不正常结束,即i<count
则返回0
否则返回1
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
这题提交的时候只有一个点对,然后我就按那个测试点改了几遍还是没用,后来问同学才知到要返回的数时1和0,而不是题目中所说的\'false\'和\'true\'。后来把返回的改成1和0,就变成答案正确了。
题目3:6-8 使用函数实现字符串部分复制
1. 本题PTA提交列表
2. 设计思路
定义循环变量i,j=0;//j用来实现两个数组的交换
for i=m-1 t[i]!=\'\\0\'
t[i]的值赋给s[j++],;//把符合要求的字符复制到s数组中
end i.
s[j]=\'\\0\'
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。没有在定义一个j,直接用i++,使控制循环的i发生了变化。
二、截图本周题目集的PTA最后排名。
三、阅读代码
这是我在网上看到的本周PTA最后一题的代码,当初写这道题的时候我的想法是把退出圈子的人删掉再重组数组,但写的时候发现这个方法不可行,因为这样就不能得到退出的人原来位置的下标。而我看到的上述代码定义了一个数组来存放每个人的位置,当有人退出时就把它所在的数字赋值为0,这样它们原来的位置不用改变,也可以通过0来标记他们的退出状态。
这题是pta的题目的代码,在写这题时我用了swich语句来实现返回,用了多个返回语句。而这个代码在函数外定义了个全局变量,函数中通过返回指针(数组地址)来实现数据返回,我觉得效率比较高。
四、本周学习总结
1.自己总结本周学习内容。
本周学习了指针,刚开始觉得挺难的,因为搞不懂它的用法,但是通过写PTA上的题目,对指针有了更深的了解,就觉得它挺简单。所以后面的题目都写得挺顺利的,没遇到太多错误。
- 如何定义指针变量和对指针变量赋值?
类型名 *指针变量名
如 int *p;
p=&i;
- 指针之间的相互赋值只能在相同类型的指针之间进行。
- 指针和数组的关系?
数组名本身是一个地址即指针值。
指针是以地址作为值的变量,而数组名的值是一个特殊的固定地址。可以看做常量指针。 - p=a+1是合法的,但a=a+1是非法的,因为数组名是常量指针。
2.罗列本周一些错题。
D选项选项错在指针越界,当初没注意到这个。
指向运算符是用地址->访问指针指向的结构成员,形式为p->str++。