这个作业属于哪个课程 | 这个作业要求在哪里 | 我在这个课程的目标是 | 这个作业在哪个具体方面帮助我实现目标 | 参考文献

  • | - | - | - | -
    C语言程序设计I |https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9825 | 能够熟练掌握所学编程语言,并且在做作业的过程中熟练语法 | 每次做作业都通过使用Markdown格式巩固记忆 | 百度,万能的学长

1PTA实验作业

1.1题目

1.1.1数据处理

数据表达:定义整形常量i,a,sum。
数据处理:将N赋值给i,定义sum=0,设定for循环的条件为i>0,i=i/10。设定循环体用a%10用于一步步从低位到高位取数, sum=sum+pow(a,3)来对每位数进行立方并对结果累加,最后判断累加的结果是否等于N并视情况返回1或0.

1.1.2代码

1.1.3数据测试

1.1.4PTA提交列表及说明


说明:
这道题因为是提前在vs上运行过得所以一次就对了
这道题难度中等,关键点在于如何将各个位上的数提取出来,其余的还是和以前一样用for循环就可以了,提取位数所使用的方法是用10来余,因为我们通用是10进制,所以每余一次就能把提取一个位数出来,最后再通过除10来把取完的数降位,因为定义的是整形所以小数点后面的数会自动省略掉。

1.2题目

1.2.1数据处理

数据表达:定义整形函数prime(int p),在函数中定义整形常量i,result。定义空函数Goldbach(int n),在函数中定义整形常量i。
数据处理:本题需要定义两个函数,prime函数用于判断输入值是否小于2并且取出素数,取素数需要设定for循环,循环条件为 i <=sqrt(p),至于为什么需要开方是为了简化运算,再调试的时候如果使用了开方输入m=89,i只需要到10就可以了,但如果不用开方就需要i到88,没错我调试的时候这一步就摁了88下F11。在这里表达出的思想就是在写代码时要尽量往最简方向去写,这样能够减少程序的运行时间优化算法。第二个Goldbach(int n)函数则是用来判断输入的数是否由两个素数组成,判断方式由if (prime(i) && prime(n - i))来执行。

1.2.2代码


1.2.3数据测试

1.2.4PTA提交列表


正确之前有两次答案错误,一次是因为默认了第一个数为3所以不管第二个数是不是素数都直接放上去了,第二次是因为输出的格式没有按照要求以为和之前的一样=号两边加空格。

2代码互评

别人的

我的


总的来说一模一样,不论是框架还是逻辑,但是唯一的缺点就是在判断素数时他使用的是m-1,也就是说计算量会大很多,现在是小程序所以没有问题,但是到了以后做大程序时每一个小程序都多一点运算量堆积下来造成的运行速度减慢是不可忽视的,所以建议即使做出来了也要寻找更加简便的方法来写程序,保证代码的精简。

3学习总结

3.1学习进度条

周\日期 |这周所花时间 | 代码行 | 学到的知识点 | 目前比较迷惑的问题

  • | - | - | - | -
    510/25 |27小时 | 400左右 | for循环,break、continue,设定函数 | 无

3.2累计代码行和博客字数

3.3学习内容感悟

3.3.1学习内容总结


这周学习了如何设定函数,在做题的过程中不断发现新的知识,在寻求帮助的过程中不断进步。设定函数的难点在于你的函数如何能够既精简又能够完美的达到目的,非常考验综合能力。

3.3.3感悟

这次的验证哥德巴赫猜想对我而言难度非常大,而难住我的主要是两点,其一就是数学方面:本身哥德巴赫猜想就是数学界的一大难题,虽然利用现在的计算机技术已经计算到了4*10的18次方以内的数都满足这个猜想,但是至今还没有人从逻辑上证明这个猜想,所以这让本身数学就差的我倍感头疼,比如为什么for循环的条件里要开方我就想不到是为了简化运算,第二就是刚接触到自行定义函数,所以用起来没有那么得心应手,所以在逻辑语句上面卡了很久出了很多错,最后我发现能够学会调试是多么的方便,能够按照流程一步一步走寻找错误,如果还像之前不会调试的时候人肉查错真不知道要多花几倍的时间。这次的哥德巴赫非常有水准,我还仍需努力。

posted on 2019-10-25 09:10  NEKOMIYA  阅读(137)  评论(0编辑  收藏  举报