一、PTA实验作业
题目1:字符串串动变化
1. 本题PTA提交列表
2. 设计思路
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
一开始写成了这样
小细节导致错误,认真读了一遍代码后解决
题目2:求子串在母串中最后一次出现的地址
1.本题PTA提交列表
2. 设计思路
int i,k=0,flag=0,count=0,count判断是否有子串,flag记录子串出现的下标
for i=0 to s[i]!=\'\\0\'
k=0
for j=o to t[k]!=\'\\0\'
如果s[j]!=t[k] 不为子串的话
break
k++
如果t[k]==\'\\0\'即为子串的话
flag=i 记下下标
count=1 存在子串
如果count!=0 存在子串
t=&s[flag] t为子串在母串中最后一次出现的地址
return t
否则 return 0
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
虽说我的代码一遍就过了,但是我觉得代码是错误的,只是题目没有考察到这个点
一开始的代码:
如果s的第一个字符开始就出现子串,还是会返回0. 改正方法:引入count查看是否存在子串
题目3:使用函数实现字符串部分复制
1.本题PTA提交列表
2.设计思路
int i,k=0
for i=m-1 to t[i]!=\'\\0\'从题目给定位置开始遍历
s[k]=t[i]
k++
s[k]=\'\\0\'添加字符串结束标志
3.代码截图
4..本题调试过程碰到问题及PTA提交列表情况说明
由于忘记添加字符串结束标志\'\\0\'导致错误,认真的找了一会儿才找到
二、截图本周题目集的PTA最后排名
三、阅读代码
1.
这是吴军霖同学PTA中 删除字符串中的子串的代码。
功能:删除字符串中的子串
好处:
- 总共用了19行代码,而我这道题用了30行代码,可见他的代码十分简洁
- 他的代码用一层do-while实现循环查看字符串是否依然存在未删减的子串,一层for寻找子串并删除。删除子串的方式构思巧妙,通过重构母串数组s来达成删除子串的目的。效率较高,占用空间也较小。
2.
这道题是老师上课讲解的,我重新写了一遍。
功能:实现字符串的冒泡排序
好处:
- 代码量小,我做这道题写了40多行,而这种方法只要27行,代码十分简洁
- 新增一个头文件string.h,调用库函数strcmp和strcpy,减少代码量的同时,让代码可读性提高很多,看到函数名,就知道要做什么事。而且代码封装成函数来写,使代码明显层次感多了起来,也进一步增加了可读性。
四、本周学习总结
1.自己总结本周学习内容
- 学习了指针的运用。比如指针偏移:
p+i
即能实现。以及指针能够指向字符串即p="abc"
这样。 - 学习了一个头文件
string.h
,该头文件包含了许多字符串处理函数,例如 strcmp函数,功能为比较两个字符串大小,格式为strcmp(str1,str2)
即比较str1和str2,要注意返回值,一般情况下str1大于str2为1,等于为0,小于为-1。
strcpy函数,功能为把一个数组中的字符串复制到另一个数组中去,格式为strcpy(str1,str2)
即把str2中内容复制到str1中去。
strcat函数,功能为连接两个字符串,格式为strcat(str1,str2)
,即将str2连接到str1中。
strlen函数,功能为计算字符串长度,不包括\'\\0\',格式为strlen(str1)
即计算str1的长度
2.罗列本周一些错题
这道题的第三个空,我会填成j<* n,答案应为j<* n-1,如果像我这么填,数组下标会越界导致错误。太过粗心。