这个作业属于哪个课程 | 这个作业要求在哪里 | 我在这个课程的目标是 | 这个作业在哪个具体方面帮助我实现目标 | 参考文献 | |
---|---|---|---|---|---|
C语言程序设计II | C语言I—2019秋作业05,C语言作业评价标准 | 熟悉并掌握基本的程序语言,拥有独立完成能力 |
|
集美大学林丽老师,思维导图,百度百科 |
1.PTA实验作业
1.1 题目名
本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)例如153=1^3+5^3+3^3=1+125+27=153,而1或155则不是水仙花数。如果是水仙花数,则函数返回1,否则返回0.
1.1.1 数据处理
①数据表达:使用了整形常量a,b,c,分别作为输入三位数数据的个位十位百位;
②数据处理:使用了if else选择语句,若符合条件返回1,不符合返回0。
③函数参数:主调函数是“int main()”被调函数是“int func(const int N)”是整形函数‘实参是N,形参是a,b,c,它们都是整形。
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
100 | 0 | 最小三位数100 |
99 | 0 | 使用非三位数 |
999 | 0 | 最大三位数999 |
153 | 1 | 使用题目数字测试 |
370 | 1 | 使用其它水仙花数 |
1.1.4 PTA提交列表及说明
提交列表说明:
1.编译错误:复制粘贴被调函数名时忘记去除分号;
2.编译错误:对于N的判断使用只一个等号而不是两个;
3.全部正确:在VS中反复验证测试然后更正,粘贴到PTA中成功提交。
1.2 使用函数验证哥德巴赫猜想
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可以分解为5+19,还可以分解为7+17),要求必须输出所有解中p最小的解。
1.2.1 数据处理
①数据表达:使用了整形变量result, i,m,其中result作为返回值;i和m作为判断素数的中间变量;
②数据处理:使用了for循环语句,流程结构是利用素数的定义对p整除,若能够整除,则这个数不是素数,则返回0。
③函数参数:主调函数是“int main()”,被调函数是“int prime( int p )、void Goldbach( int n )”,它们都是是整形函数;实参是p和n,形参是result, i,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, | 使用题目测试数据 |
99 100 | 90=7+83, 92=3+89, 94=5+89, 96=7+89, 98=19+79,100=3+97, | 在题试数据上变动观察是否改变输出 |
11 20 | 11 is a prime number 12=5+7, 14=3+11, 16=3+13, 18=5+13, 20=3+17 | 使用较小数据测试 |
1000 1008 | 1000=3+997, 1002=5+997, 1004=7+997, 1006=23+983, 1008=11+997 | 使用较大数据测试 |
1.2.4 PTA提交列表及说明
提交列表说明:
1.写在前面:这个题目作为老师说的比较难得也是分比较高的,自然比较具有挑战性。对于这种题目,个人的选择一般都是在VS中进行测试并且能够成功的输出题目测试数据,再到PTA中进行提交,避免出现过多的错误。对于哥德巴赫猜想的证明分为两步,分别对应题中的两个被调函数。其中第一个作为素数的判断。利用的是素数只有1和本身两个因数,如果它能够被别的任何数整除,那么就不是一个素数。利用这一点,使用循环语句能够很好的做出判断。而后第二个被调函数作为输出为两个奇素数之和。从最小的奇素数3开始往上,利用第一个被调函数判断两个构成的数是否都为素数,都为素数的情况下输出结果。
2.全部正确:在VS中反复验证测试然后更正,粘贴到PTA中成功提交。
2.代码互评
2.1同学代码截图(来自李泽基)
2.2自己代码截图(使用习题6.3)
2.3比较结果
①使用的整形变量的不同,我的使用的更少,相比之更简洁一些,当然名字的不同就不算在内了,每个人的习惯不一;
②使用的计算步骤的不同,我的使用的是N直接判断结果,他的使用另外一个变量sum来作为中间变量判断结果;
③使用的计算方法的不同,我的使用的是abc直接相乘,他的调用了头文件math来使用幂函数来计算,相对繁琐。
3.学习总结
3.1 学习进度条
周数/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 | |
---|---|---|---|---|---|
第五周/10-24 | 约6-7h | 约320-360 | 自定义函数的格式以及应用 |
|
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
不得不说,百度真是个好东西,尤其是对于初学者来说。既有各种各样的解惑方法,也能够省去我们很多千奇百怪的又不影响大局的问题。这周的应用中,很多的自定义函数,实际上在我们编程中利用很简单的语句就能够构造出来。就比如名头很大的哥德巴赫猜想,做出来以后感觉,不也就那么几句话,真神奇啊。所以也不是在给百度打广告,有时候能给在上面找到一些好的思路以及可以利用的方法,自己将其掌握之后,又是一笔很大的收获。真的这一次这个学习的东西,才让我们这些初学者,有了满满的成就感。这是一种属于创造性的成就感,自己构造一个函数并将其利用,这不仅仅是对于编程语句的高效化以及简洁化的提高,更是对于我们创造性思维的锻炼,受益匪浅。
记得习大大说的,要将中国制造变为中国智造,科技创新永远是第一生产力。我们所学习以及将来所从事的,都离不开创新。
“苟日新,日日新,又日新。” |