C语言I博客作业05

不问归期 提交于 2019-12-02 05:42:56
这个作业属于哪个课程 这个作业要求在哪里 我在这个课程的目标是 这个作业在哪个具体方面帮助我实现目标 参考文献
C语言程序设计II C语言I—2019秋作业05C语言作业评价标准 熟悉并掌握基本的程序语言,拥有独立完成能力
进一步强化C语言的基础学习,学习掌握自定义函数,同时通过PTA作业了解自定义函数在实际编程语言中的应用
集美大学林丽老师思维导图百度百科

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 学习体会

   不得不说,百度真是个好东西,尤其是对于初学者来说。既有各种各样的解惑方法,也能够省去我们很多千奇百怪的又不影响大局的问题。这周的应用中,很多的自定义函数,实际上在我们编程中利用很简单的语句就能够构造出来。就比如名头很大的哥德巴赫猜想,做出来以后感觉,不也就那么几句话,真神奇啊。所以也不是在给百度打广告,有时候能给在上面找到一些好的思路以及可以利用的方法,自己将其掌握之后,又是一笔很大的收获。真的这一次这个学习的东西,才让我们这些初学者,有了满满的成就感。这是一种属于创造性的成就感,自己构造一个函数并将其利用,这不仅仅是对于编程语句的高效化以及简洁化的提高,更是对于我们创造性思维的锻炼,受益匪浅。
   记得习大大说的,要将中国制造变为中国智造,科技创新永远是第一生产力。我们所学习以及将来所从事的,都离不开创新。

“苟日新,日日新,又日新。”
————《礼记·大学》
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!