C语言I博客作业05
这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9825 |
我在这个课程的目标是 | 熟练掌握自定义函数的应用,for循环语句要比上周更熟练,从而更好地掌握C语言 |
这个作业在那个具体方面帮助我实现目标 | PTA的作业题目让我很好的练习新学的知识,而且在学习总结中可以很好的回顾学过的知识 |
参考文献 | 《C Primer Plus》第六版、百度、C语言程序设计 |
1.PTA实验作业
1.1题目名:水仙花数判断
本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)。例如153=13+53+3^3=1+125+27=153,而1或155则不是水仙花数。如果是水仙花数,则函数返回1,否则返回0.
1.1.1数据处理
数据表达:应用了a, sum, i变量,把这些变量都定义成了整型变量
数据处理:先要用for循环算出一个数的每个数字的立方之和,再用if-else语句来判断是不是水仙花数
函数参数:主调函数是int main(),被调函数是int func(const int N),都属于整型函数,形参是a, sum, i,实参是N
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
153 | 1 | 例题上的数据 |
12 | 0 | 使用两位数来测试 |
5694 | 0 | 使用四位数来测试 |
489 | 0 | 使用一个三位数来测试 |
1.1.4PTA提交列表及说明
因为中间两个题目都是一次性做对的,不好说明,我就说说做这个两个题的过程吧。因为两个题差不多。刚开始看到题目感觉无从下手,把一个整数要分开来计算,这怎么搞。后面翻了书,希望能找到灵感,可惜没有。突然在一瞬间,想到是不是可以用余数呢?每次除以10后的余数来进行计算。然后在PTA上吧代码敲出来,一提交就对了。那一刻还蛮高兴的。其实有时候不要把一些东西看的太难,可能它可能根本就没有那么复杂,这就是我做中间两个题的心得。
1.2 题目名:使用函数验证哥德巴赫猜想
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
1.2.1 数据处理
数据表达:应用了i,result,m变量,把这些变量定义成整型变量
数据处理:使用了if-else语句和for循环语句,用来判断一个数是否是素数,并且计算最小素数与另一个素数之和为一个偶数
函数参数:主调函数是int main(),被调函数是int prime( int p )、void Goldbach( int n ),都是整型函数,实参是p和n,形参是i,result,m
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
89 100 | 89 is a prime number 90=7+83, 92=3+89, 94=5+89, 96=7+89, 98=19+79,100=3+97 | 例题上的数据 |
23 30 | 23 is a prime number 24=5+19,26=3+23,28=5+23,30=7+23 | 使用较小数据来测的 |
1012 1020 | 1012=3+1009,1014=5+1009 ,1016=3+1013,1018=5+1013,1020=7+2013 | 使用较大数据来测 |
1.2.4 PTA提交列表及说明
1.编译错误:21行忘记打分号
2.编译错误:10行的等于号只打了一个
3.编译错误:有一行的大括号忘记扩回来了
4.编译错误:20行后的int忘记空格了(找了好久,还是太粗心了)
5.答案错误:20行打成i=n了,要改成i=3(同学帮我检查了出来)
6.部分正确:没有打break,出现的结果会出现错误(问了同学,正确后翻了课本查询break,是跳出循环)
2代码互评
2.1同学代码截图(计科1班李泽基同学)
2.2自己代码截图
2.3比较结果
1.他用的是把每个数字变成三个变量,然后再进行计算,而我采用的是用for循环语句来进行计算
2.从代码简洁度来看,我的似乎更简洁一点,但是他的方法也很直接,用很简单的语句完成了计算
3.同一个题目会有不同的代码出现,我们应该不断锻炼自己,尽量用最简洁的代码写程序(这次比较的想法)
2.4同学代码截图(计科一班陈艺洋同学)
2.5自己代码截图
2.6比较结果
1.我们都采用了循环语句,但我用的是for循环,而她用的是while循环,这个我们还没有学,但她却提前学习了,这点值得我学习
2.在结果表达方面,我是直接写的result 1和result 0,但她却先用d来表示1或0,然后在return d来表达结果,但我觉得这样可能麻烦了点
3.这一次比较我更加觉得我们要往前学习,因为有些问题用后面的知识去学可能会方便和简洁
3.学习总结
3.1学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周(9.19-3.27) | 6天 | 26行 | Hello world编程和Markdown语法 | 现在没有疑惑 |
第二周(9.25-10.4) | 4天 | 45行 | 华氏度与摄氏度的转换 | 对于变量的类型还不是很懂 |
第三周(10.8-10.11) | 3天 | 大约100行左右 | 计算分段函数和学习if-else语句 | 对于if-else语句还是不那么熟练 |
第四周(10.15-10.17) | 3天 | 大约75行左右 | for循环语句和指定次数的循环程序设计 | 关于指定次数的循环程序设计还不是很清楚 |
第五周(10.22-10.25) | 4天 | 大约110行左右 | 使用自定义函数来编程和生成乘方表和阶乘表 | 关于自定义函数的编程的细节还是不太懂 |
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
这周学的东西和以往有点不一样-自定义函数,可能是刚接触,在做PTA时很懵,有点不知道该怎么打。尤其是最后一题:使用函数验证哥德巴赫猜想。做这题真的很崩溃,完全不知道怎么下手,一直担心如果没有做出来该怎么办。后来和同学一起讨论,并且在网上搜索资料,还是成功弄出来了。那一刻,有着满满的成就感。可是在做PTA作业时,我还是发现了我的一个很大的缺点,那就是太粗心了,几次的编译错误都是很不应该犯的,我还是要更细心点。而且中间还运用了break,这也意味着我们要往前走,超前学习,不能仅仅局限于老师课堂上讲的东西,要往前面学。关于这个自定义函数,我还要多熟悉熟悉,因为还不是很熟练,相信自己可以的,加油!