在这段时间学习中,我接触了指针,虽然知道指针是c的灵魂,会很难,可是开始学习就有点懵了,尤为是感受到老师节奏加快了。 在指针的调用仍是挺迷茫的,不知道何时要用指针,并且指针的题目不少用数组也能够解决,这就让我更加不懂指针该怎么用啦。
给定程序中函数fun的功能是:求出在字符串中最后一次出现的子字符串的地址,经过函数值返回,在主函数中输出今后地址开始的字符串;若未找到,则函数值为NULL。
首先main函数传了两个地址到fun函数中 因此fun函数要作的就是比较两个地址的内容 --定义*p=t,*m;//定义两个指针,flag=0,sign=0; --while(*s)遍历*s -----if(*s等于*t) ---------while(*t)遍历*t -----------若是与*s相同就记住该地址 ---------end while ----end if ----判断输出
A:虽然提交全是对的,私底下在dev调试了很久,主要是在比较和遍历的时候会出问题
Q:经过调试慢慢思考,慢慢调试出答案算法
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
做用是来判断除法和减法的错误 if 前一个数不能整除后一个数 then flag=0 end if if 当运算符为-或/且前一个数小于后一个数时 then flag=0 end if
定义 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
原来的代码:
数组
二者不一样在于函数的运用和指针的运用,还有就是数组,运用了这些后使得代码更加简洁明了 原来的代码很长并且很杂乱,用了指针一些全局变量就能够去掉了,使得代码的全局变量减小 也减小了一些失误的发生;固然,用了指针能够使得代码的延展性增强,之后修改能够更加方便
第一次写大做业的时候感受很难,并不知道如何下手,万事开头难,总算写完了第一次的大做业, 而此次修改的难度比上次还大,由于指针学的并不清晰,弄得本身弄代码的时候一直出错,还改不过来 最后只要求助其余同窗。 可是经过此次大做业,能够加深我对函数的理解,在以后拓展的时候只要修改小部分在加上定义新函数就能够