C博客作业--指针

Posted 你们走啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C博客作业--指针相关的知识,希望对你有一定的参考价值。

一、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,如果像我这么填,数组下标会越界导致错误。太过粗心。

以上是关于C博客作业--指针的主要内容,如果未能解决你的问题,请参考以下文章

C博客作业--指针

C博客作业--指针

C博客作业--指针

C博客作业--指针

C博客作业--指针

C博客作业--指针