C语言博客作业03--函数
1.本章学习总结(2分)
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
- 通过本章的学习,又学会了一些新的知识,对于C语言的认识又迈进了一步,在学习函数后,减少了反复使用的繁杂过程,但对于前几个星期学的知识也融合了起来,并可以通过学习函数进行复习,对于一些变量的用法也有了一定的认识,全局变量.局部变量.静态变量等,学会了更多对于变量的更合适的运用。并在完成四则运算的大作业中,通过调试,询问助教小姐姐问题,感觉自己懂得更多了。
- 对于上次总结中提到的要增加打代码的时间,刚开始确实有认真完成,但坚持的天数不多,在此对自己进行检讨,给自己定个量,每天100行代码,希望到下次的学习总结时能顺利完成任务。
1.2.2 代码累计
2.PTA总分(2分)
2.1截图PTA中函数题目集的排名得分
2.2 我的总分:
145分
3.PTA实验作业(1分)
本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。
3.1.1 算法分析
fib函数
PrintFN函数
3.1.2 代码截图
3.1.3 测试数据
3.1.4 PTA提交列表及说明
Q:设置太多循环,出现运行超时,断错误等问题
A:可以找出所求两者的关系来减少循环,也可以减少错误。如P87-88的程序改进,使循环的量减少。
4.大作业(5分)
题目:实现小学四则运算。
4.1.函数关系图
4.2.函数功能介绍
主函数
功能:可选择题目的难度,在输错时给出提醒并可重新输出
思路:1.根据所输入的选择跳入一步运算的函数或两步运算的函数
2.输入时,加判断非法字符,并清空缓冲区字符,加判断在任何时候都可以退出
截图函数代码
函数1
功能:实现一步的加减乘除
1.通过产生三个个位随机数,随机产生题目,且除数不为零,判断对错后随机产生正确错误的回答。
2.输入答案时,若输入非法字符会出现提示
2.在选择的题目数做完后,会给出使用者得到的分数
3.在任何时候都可以退出
思路:
1.通过产生两个随机数,随机产生题目,且除数为零时加1,判断对错后使用随机产生正确错误回答的函数。
2.输入时,加判断非法字符,并清空缓冲区字符,加判断在任何时候都可以退出
3.对对错题目进行统计
截图函数代码
函数2
功能:实现两步的加减
1.通过产生三个随机数,及一个符号,随机产生题目,判断对错后随机产生正确错误的回答。
2.输入答案时,若输入非法字符会出现提示
2.在选择的题目数做完后,会给出使用者得到的分数
3.在任何时候都可以退出
思路:
1.通过产生四个随机数,全局变量select==2时百位随机数,select==3时千位随机数,一个当符号,判断对错后使用随机产生正确错误回答的函数。
2.输入时,加判断非法字符,并清空缓冲区字符,加判断在任何时候都可以退出
3.对对错题目进行统计
截图函数代码
函数3
功能:实现正确回答的随机输出
思路:
通过产生四个随机数,用switch语句进行判断,输出不同回答
截图函数代码
函数4
功能:实现错误回答的随机输出
思路:
通过产生四个随机数,用switch语句进行判断,输出不同回答
截图函数代码
4.3 运行结果截图
1.在选择难度和题目时输入非法字符
2.开始时退出和中途退出
3.在做题时输入非法字符及做完题后输出成绩
容易
中等
困难
4.4 调试碰到问题及解决办法
问题1.在scanf(%d,&n)的语句内输入字母会使程序崩溃,不断地输出
解决方法:刚开始改用%c进行输入,发现只能读入一个字符,并不合适,最后学会了设置循环选择判断scanf()是否==0,若==0,fflush(stdin)清空缓冲
区里的内容,再次输入
问题2.在随机得到两位数的时候使用rand()%100会出现个位数
解决方法:先用rand()%90再加上10,就能防止个位数的产生,取三位数的时候也是如此
问题3.分母为0的问题
解决方法:判断随机数若为0,加上1可以解决;或进行循环直到不是0为止。
问题4.只会用随机数,不知道怎么出现随机符号
解决方法:先产生随机数,再用随机数代表符号,进行判断
4.5 大作业总结
1.从这次大作业的编写时间来看是按天来计算的。
其中如输出的内容为使整体看起来较为清晰要进行要进行一次次的调整;
要发现自己代码的bug也要一次次地运行,比如scanf(%d,&n)输入字母,刚开始百度使用的getchar(),但经过运行后发现只能吃掉一个,然后多个getchar()也不行,你就要多次输入其他键,使getchar()消耗完,最后才找到fflush(stdin)清空缓冲区这个方法
在算得分的时候因为变量是int型,整形除整形还是整形,但并没有发现,以为在循环中出现问题,经过很久的调试,才发现是int型的原因,就是个小问题都要经过长时间的修改和调试
2.这次大作业的编写过程也复习了以前学过的内容,一些小知识点,甚至被自己忽视的地方也通过这次机会得到补充
3.这次大作业自己写的代码有点长,有些代码其实一直在重复,造成代码污染,这点必须反省一下