这一个多星期将近两个星期的时间一直在学习指针,其实就跟老师说的同样,从函数开始题会变得难一些,而后须要咱们思考的越多,而后是数组,最后就是指针。我算法
认为指针的难度很大,我也不是很清楚具体的操做,只能硬着头皮,看翁恺视频,看学校c 语言的书去打代码,此次pta的题集题虽然很少,但都颇有难度,每一道题都数组
须要我花不少的时间去写。再有,我认为,指针是一种方法,老师说这也是c语言的灵魂,与下学期要学的数据结构联系很大,因此我要用心学习,在这方面打好基础数据结构
,争取不拖之后学习的后腿。函数
下列程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将该字符前的全部字符向后顺序移动一个位置,而后将该字符放到第一个位置上。
定义void类型函数 fun 定义 int型变量 i,t; 定义 字符指针数组char max指向指针p; for i=0到数组结束 依次判断ASCII码值最大的字符,使之变成max; for i=t-1到i=0 p数组的第i+1个等于第i个 p[0]=max;让ASCII码值最大的字符变成数组的第一个
Q1:编译错误?学习
A1:我对于字符数组使用的还不是很熟练,在让字符数组为零这个方面的语法产生了错误。设计
Q2:答案错误?3d
A2:此次是循环中的循环条件,应该到t-1结束,下一个等于前一个。指针
题目:实现小学四则运算。code
在函数那章,咱们已经实现小学四则运算这份做业,如今要求你们把以前设计函数升级改造,原来的函数你们都是用全局变量实现不一样函数参数传递,此次做业要求改视频
地址传递,减小全局变量的使用。
题目要求:
题目有3个难度级别,分别为:
•第一级是1位数的一步加减乘除计算
•第二级是2位数的2步加减运算
•第三级是3位数的2步加减运算
定义指针数组exp; 输入能产生随机数字的函数 定义静态数组ch[2]; 定义number1,number1产生0-9的随机数字,number2同理 用一个函数itoa(number1, exp, 10)将 number1放进数组exp中; //百度出来的强制类型转换,将int类型数字转换为char型 定义number3产生1-4的随机数; 用switch case,将1,2,3,4分别表示符号加减乘除 用函数strcat(exp, ch),将number1和符号链接 定义字符数组Num为空数组,将number2存进去 用函数strcat(exp, Num),将exp与number2链接 用函数strcat(exp, "=")将与等号链接 最后用puts输出指针
定义int temp=0; 定义int Result=0; 当(exp[0]<='9'&&exp[0]>='0' ) 即数字number1为0-9时, 结果 Result =number1 if (第一个运算符=='+') Result=number1+number2 else if (第一个运算符=='-') Result=number1-number2 else if (第一个运算符=='*') Result=number1*number2 else Result=number1/number2 返回结果 Result;
我原有的函数是这种类型,当时只会定义变量,不会使用数组和指针,就一个劲儿的用switch case,将依次运算的结果加啊加,一次两次还好,若是是屡次运算,代码
会很长,虽然不繁琐,可是重复的会不少,代码看起来很不舒服,我用了数组和指针就不会。首先,长度会缩小,我只须要定义字符数组就好,不用一次次的加减运
算,其次,用数组的话,让运算符号,即加减乘除的表示方便了不少。
改造前的函数2在上图中,仍是那句话,改造前计算结果时,我要一次次的表示出来,不停的写number1啊number2啊这些,改造后就不用,我只须要把整型数变成字符
型数,再用strcat这个函数将函数链接起来就好。可是我以为不足的,也是我如今尚未想到办法的就是运算次数的问题,一次两次还好,要是运算次数多了,不停的定
义数组也是一个麻烦事,还要不停的把数组链接起来,也挺麻烦的。
1.首先我遇到的麻烦是在函数1中,由于我当时定义的number1,number2这些都是整型数字,可是我想把他们放进一个字符型的数组里,在这块我不知道怎么用强制类
型转换,而后我一个舍友告诉我百度,因而我就查到了itoa这个函数,能够将整形数字变成字符,在百度的同时呢,我还看到了不少能够用来将整型变成浮点型或者将浮
点型变成字符型的这些函数,学到了很多知识,同时也让我知道了,在遇到不懂得问题时,查百度不失为一个好方法。
2.而后仍是在函数1中,第一开始个人链接有毛病,加减乘除运算符怎么弄都没法尽到数组里,致使输出的时候一直不对,后来询问大佬,他说strcat传进去的是地址,我
第一开始定义了一个野指针,当时很不理解,我就问他既然我定义了数组,指针的意义在哪里,他说,对于数组指针可能没意义,可是对于整型什么的就有意义,大数
据传指针能够增长运行速度,听得似懂非懂的我只能之后本身慢慢去摸索了。
3.在函数2中,我计算的结果老是不对,后来发现是运算符优先级的问题,我将字符型数字变成整型数字时,要减去“0”,但是我却忘了加括号,这就致使运算出现了错
误,此次知道了,下次就不能再犯这种毛病了。
4.在此次修改大做业的过程当中,我发现了我以前代码的许多问题,好比重复啊,函数较少啊,运算较麻烦等等,我知道大做业是一项大工程,本身不能老是犯懒,要尽可能
改正这些问题与毛病。