在本周的学习过程当中,咱们学习了指针的用法。说实话,指针的用法有点绕,以前一直没搞懂指针的传参,不懂指针与数组之间的关系和用法,致使作PTA时很吃力,最后仍是先静下心把课本和笔记再看了一遍,才分清楚他们的用法。可是对于指针的运用仍是很不熟练,而且思想上第一时间不会去考虑使用指针,且以为指针相对于数组比较麻烦,多是咱们如今接触的题目尚未体现出指针的优点吧。
总分:125分算法
给定程序中函数fun的功能是:求出在字符串中最后一次出现的子字符串的地址,经过函数值返回,在主函数中输出今后地址开始的字符串;若未找到,则函数值为NULL。 函数接口定义: char *fun (char *s, char *t ); 其中 s和t 是用户传入的参数。函数求 t指针所指的字符串在s指针所指的字符串中最后一次出现的地址,并返回,若未找到,则函数值为NULL。
若找不到,则返回NULL;数组
A2:当时的s[j]表示的时子串的最后一个字符,应该再减去子串的有效长度。函数
在函数那章,咱们已经实现小学四则运算这份做业,如今要求你们把以前设计函数升级改造,原来的函数你们都是用全局变量实现不一样函数参数传递,此次做业要求改地址传递,减小全局变量的使用。post
题目要求:
题目有3个难度级别,分别为
第一级是1位数的一步加减乘除计算
第二级是2位数的2步加减运算
第三级是3位数的2步加减运算学习
改进内容:
1.构造字符数组存放算术表达式
2.表达式是否合法
对于不合法或者超出该级别小学生学习范围的表达式,视为不合法,需重造一个。不合法表达式体现有除数为0的表达式、1,2级别中出现不能整除的除法表达式或其余不合法状况设计
传入num1,num2,op,指针posture; 定义算式的答案result; 定义一个临时数组temp,用于存放由数字转换成的字符; 利用_itoa函数,num1由整型转换成字符型; //_itoa函数的具体用法 ——itoa(num,str,base)将num按十进制转为字符串存在str中 将temp复制到posture; 经过判断op随机获得的值,来赋予op运算符号; if op=0 then result=num1+num2; 将posture与‘+’链接起来; end if if op=1 then result=num1-num2; 将posture与‘-’链接起来; end if if op=2 then result=num1*num2; 将posture与‘*’链接起来; end if if op=3 then result=num1/num2; 将posture与‘/’链接起来; end if 将num2转换为字符并存在temp中; 将posture与由num2转换后的temp链接; 将posture与‘=’链接; 返回result; 第2、三级一次类似
在等级1的除法运算若产生的表达式不合法,则从新产生一个表达式
待上一个函数返回result的值以后 if result为小数 then 清屏 返回到等级1中,从新生成一个式子 end if
函数1:
先前的代码:
改进以后的代码:
3d
1.改进前的代码是用数字进行输出,而改进以后的数组是用字符数组存放 2.改进前有多个输出口,而改进以后代码使每个等级的式子的输出都只有单一出口,改进以后的代码提升了代码的运行速率和可读性
函数2:
(因为以前并无实现这个功能,我就直接截图后来的代码)
指针
这段代码能够有效的避免出现不符合用户作题的式子,提升了用户的体验感。可是从代码上看,由于用了goto out,因此是代码的可读性降低了。而且,若过可能是使用goto out很容易形成混乱。可是我还没想到怎么用指针来实现该功能。
由于在对指针的用法不熟悉,因此此次的大做业我作的很是吃力。而且并无将整个大做业所有改成指针,主要是我认为,在这些部分,直接传参就能够解决了,不须要硬用指针。 还有就是在改的过程当中,卡在了不知道如何将整型转换为字符串。后来,,,,上网问完百度以后,发现用一个——itoa函数就能够轻轻松松解决,因此,学会利用百度这个巨大的资源库是一个很是重要的技能。