指针
1.本章学习总结
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
在这段时间学习中,我接触了指针,虽然知道指针是c的灵魂,会很难,但是开始学习就有点懵了,尤其是感觉到老师节奏加快了。
在指针的调用还是挺迷茫的,不知道什么时候要用指针,而且指针的题目很多用数组也可以解决,这就让我更加不懂指针该怎么用啦。
1.2.2 代码累计
2.PTA总分
2.1截图PTA中循环结构2次题目集的排名得分
2.2 我的总分:125
3.PTA实验作业
3.1 PTA题目1
给定程序中函数fun的功能是:求出在字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
3.1.1 算法分析
首先main函数传了两个地址到fun函数中
所以fun函数要做的就是比较两个地址的内容
--定义*p=t,*m;//定义两个指针,flag=0,sign=0;
--while(*s)遍历*s
-----if(*s等于*t)
---------while(*t)遍历*t
-----------如果与*s相同就记住该地址
---------end while
----end if
----判断输出
3.1.2 代码截图
3.1.4 PTA提交列表及说明
A:虽然提交全是对的,私底下在dev调试了好久,主要是在比较和遍历的时候会出问题
Q:通过调试慢慢思考,慢慢调试出答案
4.大作业
4.1.改造函数介绍
4.1.1.函数1
begin://以防输入非法字符,可以重新输入
定义 i=0,j,answer;
字符数组“+-*/”
if level=1 then
生成一步一位数加减乘除计算式,并储存
end if
else if level==2 or level==3 then
生成两步2/3位加减计算式,并储存
end if
if strlen(exp)==3 then//判断是否可以整除,不可以则重新生成表达式
if !IsExp(exp) then goto begin end if
end if
4.1.2.函数2
作用是来判断除法和减法的错误
if 前一个数不能整除后一个数 then
flag=0
end if
if 当运算符为-或/且前一个数小于后一个数时 then
flag=0
end if
4.1.3.函数3
定义 m,sum=0,i,answer;
char oldc='+';
if strlen(exp)==3 then//如果是第一级别的情况
---if + then answer=前面的数+后面的数 end if
---else if - then answer=前面的数-后面的数 end if
---else if * then answer=前面的数*后面的数 end if
---else if / then answer=前面的数/后面的数 end if
end if
else//如果是第二,三级别的情况
---for i=0 to strlen(exp)
-------if 字符在0到9之间 then
-----------m=10*m+(*(exp+i)-'0');//求每个数的数值
-------end if
-------else //字符不在0到9之间
-----------if oldc=='+' then sum=sum+m; end if
-----------else sum=sum-m; end else
-----------m=0;
-----------oldc=*(exp+i)
------end else
--end for
--answer=sum;
end else
return answer
4.3 与原有函数代码比较
两者不同在于函数的运用和指针的运用,还有就是数组,运用了这些后使得代码更加简洁明了
原来的代码很长而且很杂乱,用了指针一些全局变量就可以去掉了,使得代码的全局变量减少
也减少了一些失误的发生;当然,用了指针可以使得代码的延展性加强,以后修改可以更加方便
4.4 改进大作业总结
第一次写大作业的时候感觉很难,并不知道如何下手,万事开头难,总算写完了第一次的大作业,
而这次修改的难度比上次还大,因为指针学的并不清晰,弄得自己弄代码的时候一直出错,还改不过来
最后只要求助其他同学。
但是通过这次大作业,可以加深我对函数的理解,在之后拓展的时候只要修改小部分在加上定义新函数就可以