1.本章学习总结(2分)
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
本周学习了函数和一些数据类型和表达式,函数可以将一个大的程序设计任务分解成若干小任务,这样便于实现,协调及重用,使编程更加简单,便捷,提高了工作效率。函数给我的感觉就是有一点懵,就是大概知道是这么写,但又觉得不准确,就一定要靠去编译器里尝试它的可行性,跟前面的分支和循环语句给我的感觉完全不同。可能是还不熟练。
数据类型和表达式在前面的代码运用中多多少少了解了一些,基础的,比较常用的,印象比较深刻,记得更牢靠一些。突然本章有一堆出现的时候,就有些记不住了,还需要多看几遍。
1.2.2 代码累计
2.PTA总分
2.1截图PTA中函数题目集的排名得分
2.2 我的总分:
总分 145
3.PTA实验作业
3.1 PTA题目1
使用函数验证哥德巴赫猜想
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
3.1.1 算法分析
- int prime( int p
- int flag=0 ,i
- p=1 return 0 //判断1不是素数
- p=2 return 0 //判断2是素数
- for i=2;i<=p/2;i++
- if (p%i==0)
- flag =1
- return 0
- end if
- end for
- if (flag==0) //判断素数
- return 1
- end if
- void Goldbach( int n )
- for(p=2;p<n;p++)
- if(prime(p)==1)
//根据循环可以直接从小到大求得p- q=n-p
- if(prime(q)==1)
- printf("%d=%d+%d",n,p,q);
- end for
- if(prime(p)==1)
- end if
- for(p=2;p<n;p++)
3.1.2 代码截图
3.1.3 测试数据
3.1.4 PTA提交列表及说明
- 先是编译错误,根据编译器指示,改了过来
- 后来是部分正确,因为对素数的判断不严谨,1不是素数,2是素数,提前判断1,2,因为后面的判断没管1,2;
4.大作业
题目:实现小学四则运算。
要求:
题目有3个难度级别,分别为:
第一级是1位数的一步加减乘除计算
第二级是2位数的2步加减运算
第三级是3位数的2步加减运算
注意:
运算数及运算符都是随机生成的。
用户每选择一个难度级别后必须输入题目数量,最好能统计用户的正确率。用户每算一题,若错误,给出正确答案。
用户中途退出,不继续做题,需要有个提示操作可中途退出。
软件界面必须友好,多加文字提示,能让用户自己当前做什么,接下来怎么做,每步操作可以退到菜单界面。
用户输入的非法数据,务必有友好提示,而不是让程序陷入瘫痪。
注意函数封装,不管是几位数的加减乘除运算,相同功能的代码应该都封装都一函数,通过参数传递实现代码覆盖。也可以考虑数据输入、输出等函数封装,尽量不要把代码都放main中。各种异常情况也可以单独封装函数处理,让程序的扩展性更强。
扩展功能:
可以设置答题时间,用户超过答题时间,提示不能继续做题,重新选抽题。请查阅C的时间函数。
扩展难度级别,比如出现2步加减乘除,然后乘除优先计算。比如2+3*4运算
4.1.函数关系图
4.2.函数功能介绍
1.函数1
- 根据等级判断进入第一级别
- 自动生成数字和运算符,并计算
- 判断输入值与输出值之间的差别
- 判断中途退出的选项
2.函数2、3
- 第二、三段代码和第一段代码极为相似,整体输入格式相同
- 其中随机数生成位数,范围不同,需要改动
- 进行两次加减,所以增加随机字符判断,增加计算步骤
4.3 运行结果截图
按照程序功能,分别截图展示运行结果,对于临界、不合法数据,可单独截图运行结果图。
4.4 调试碰到问题及解决办法
- 运行时发现会出现1.004这样的随机数出来进行运算,算出来的答案还都不对,给的正确答案也很奇怪
- 后来调试,发现没什么大问题,每个步骤都很对,就是在答案输出错误后下一运算上面显示的数值跟页面不同
- 后来发现先是没有计算错误后给出提示:正确答案是,给出正确答案后又没有换行,视觉上给人错误
- 计算除数时,无法整数时,特别是结果为无限小数时。输入什么结果,都是错的,如下图
- 然后就想着直接让计算能整出的,然后就加了这样的代码
- 这样的代码就会出现如果遇到不能整除的,自动跳过,但是算作是已经有一题了,导致明明要出4道题,结果就只有3道或者更少
- 所以最后就在开始的时候,直接判断整除
- 然后就想着直接让计算能整出的,然后就加了这样的代码
4.5 大作业总结
大作业真的能让人快速理解并掌握已学内容,是一种非常有用的学习方法,就是需要花的时间比较长。它锻炼我们写代码时候的逻辑思维,让我们考虑东西更加全面。对于我而言,的确是有些难度,老师要求的一些拓展部分,我还是没有想出什么行之有效的方法,代码中估计还有许多bug,和还没有考虑进去的问题。它估计还很初步,还很不严谨,希望能在借来学习和一次又一次的大作业中进步,让自己的代码更严谨,自己可以考虑的更全面吧。