1.本章思考总结
1.1思维导图
1.2本章学习体会及代码量
1.2.1学习体会
这一个多星期将近两个星期的时间一直在学习指针,其实就跟老师说的一样,从函数开始题会变得难一些,然后需要我们思考的越多,然后是数组,最后就是指针。我
认为指针的难度很大,我也不是很清楚具体的操作,只能硬着头皮,看翁恺视频,看学校c 语言的书去打代码,这次pta的题集题虽然不多,但都很有难度,每一道题都
需要我花很多的时间去写。再有,我认为,指针是一种方法,老师说这也是c语言的灵魂,与下学期要学的数据结构联系很大,所以我要用心学习,在这方面打好基础
,争取不拖以后学习的后腿。
1.2.2代码累计
2.PTA总分
2.1得分与排名:
2.2我的总分:100分
3.PTA实验作业
3.1PTA题目1
下列程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将该字符前的所有字符向后顺序移动一个位置,然后将该字符放到第一个位置上。
3.1.1算法分析
定义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码值最大的字符变成数组的第一个
3.1.2代码截图
3.1.3PTA提交列表及说明
Q1:编译错误?
A1:我对于字符数组使用的还不是很熟练,在让字符数组为零这个方面的语法产生了错误。
Q2:答案错误?
A2:这次是循环中的循环条件,应该到t-1结束,下一个等于前一个。
4.1大作业
题目:实现小学四则运算。
在函数那章,我们已经实现小学四则运算这份作业,现在要求大家把之前设计函数升级改造,原来的函数大家都是用全局变量实现不同函数参数传递,这次作业要求改
地址传递,减少全局变量的使用。
题目要求:
题目有3个难度级别,分别为:
•第一级是1位数的一步加减乘除计算
•第二级是2位数的2步加减运算
•第三级是3位数的2步加减运算
4.1改造函数介绍
1.函数1
定义指针数组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输出指针
2.函数2
定义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;
4.2与原有函数比较
改造前的函数1和改造后的函数1
我原有的函数是这种类型,当时只会定义变量,不会使用数组和指针,就一个劲儿的用switch case,将依次运算的结果加啊加,一次两次还好,如果是多次运算,代码
会很长,虽然不繁琐,但是重复的会很多,代码看起来很不舒服,我用了数组和指针就不会。首先,长度会缩小,我只需要定义字符数组就好,不用一次次的加减运
算,其次,用数组的话,让运算符号,即加减乘除的表示方便了很多。
改造前的函数2和改造后的函数2
改造前的函数2在上图中,还是那句话,改造前计算结果时,我要一次次的表示出来,不停的写number1啊number2啊这些,改造后就不用,我只需要把整型数变成字符
型数,再用strcat这个函数将函数连接起来就好。但是我觉得不足的,也是我现在还没有想到办法的就是运算次数的问题,一次两次还好,要是运算次数多了,不停的定
义数组也是一个麻烦事,还要不停的把数组连接起来,也挺麻烦的。
4.3改进大作业总结
1.首先我遇到的麻烦是在函数1中,因为我当时定义的number1,number2这些都是整型数字,但是我想把他们放进一个字符型的数组里,在这块我不知道怎么用强制类
型转换,然后我一个舍友告诉我百度,于是我就查到了itoa这个函数,可以将整形数字变成字符,在百度的同时呢,我还看到了很多可以用来将整型变成浮点型或者将浮
点型变成字符型的这些函数,学到了不少知识,同时也让我知道了,在遇到不懂得问题时,查百度不失为一个好方法。
2.然后还是在函数1中,第一开始我的连接有毛病,加减乘除运算符怎么弄都无法尽到数组里,导致输出的时候一直不对,后来询问大佬,他说strcat传进去的是地址,我
第一开始定义了一个野指针,当时很不理解,我就问他既然我定义了数组,指针的意义在哪里,他说,对于数组指针可能没意义,但是对于整型什么的就有意义,大数
据传指针可以增加运行速度,听得似懂非懂的我只能以后自己慢慢去摸索了。
3.在函数2中,我计算的结果总是不对,后来发现是运算符优先级的问题,我将字符型数字变成整型数字时,要减去“0”,可是我却忘了加括号,这就导致运算出现了错
误,这次知道了,下次就不能再犯这种毛病了。
4.在这次修改大作业的过程中,我发现了我之前代码的许多问题,比如重复啊,函数较少啊,运算较麻烦等等,我知道大作业是一项大工程,自己不能总是犯懒,要尽量
改正这些问题与毛病。