C语言博客作业03--函数
1.本章学习总结
1.1思维导图
1.2 本章学习体会及代码量学习体会
1.2.1学习体会
在本章的学习中,我学到了函数的应用,学到了什么是全局变量什么是局部变量,以及静态局部变量在计算累加累乘数时该怎么用。但是平时看书时间太少,许多基础知识还不清楚,以后会多看看课本。在pta的作业难度上,明显比前两次作业要来的简单,但自己在做的过程中仍会出现粗心的问题,比如写错循环条件,导致无限循环。今后会更加注意,以免将来代码量大的时候找不出错误。以后还应该注意认真审题,提高做题效率。
1.2.2代码累计
2.PTA总分
2.1截图
2.2我的总分
我的总分:145
3.PTA作业
3.1PTA题目一
本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。
3.1.1算法分析
定义返回第n项Fibonacci数的函数
定义整型变量 i,fn1=0,fn2=0,fn,flag=0
for i=1 to n do
if i==1 || i==2 then fn=1
end if
fn1=flag
if i>2 then fn=fn1+fn2
ebd if
flag=fn2
fn2=fn
end for
返回 fn 的值
定义在一行中输出给定范围[m, n]内的所有Fibonacci数的函数
定义整型变量 j,flag1=0,x=0
for j=1 to 10000 then
if m<=fib(j) && fib(j)<=n then
flag1=1
end if
if x!=0 then 输出空格
end if
输出 Fibonacci数
x=x+1
if fib(j)>=n && flag1!=1 then 输出 "No Fibonacci number"
结束循环
end if
if fib(j)>n then 结束循环
end if
end for
输出
3.1.2代码截图
3.1.3测试数据
3.1.4PTA提交列表及说明
-
Q1 末尾空格多了一个。
-
A1 将空格提至输出数字前,第一个输出数字前不输出空格。
-
Q2 当输入1 1 2时,Fibonacci数只输出了一个1,但题目要求两个。
-
A2 将最后一行中的跳出循环条件改了一点点,使程序可以跳出两个相同Fibonacci数。
4.大作业
题目:实现小学四则运算。
4.1.函数关系图
4.2.函数功能介绍
1.函数一
功能:随机产生第一级的1位数的一步加减乘除计算题。
思路:先输入想挑战的次数,设为循环次数。循环体内,随机产生两个一位数字和一个字符(+,-,*,/),然后通过switch语句给正确答案赋值。若自己的回答等于正确答案,right加一。 ( 随机产生题目时应考虑小学计算中不会出现负数,除号后不为零,除法不应该为小数。)
2.函数二
功能:随机产生第二级的2位数的2步加减计算题。
思路:先输入想挑战的次数,设为循环次数。随机产生两个二位数字和一个字符(+,-) 用到switch语句得到正确答案,再对比自己的回答和正确答案,累计答题数目和正确题目数,最后计算成功率。
3.函数三
功能:随机产生第三级的3位数的2步加减计算题。
思路:与函数二差不多。
4.函数四
4.3 运行结果截图
开始页面
函数一
函数二
函数三
输入非法字符截图
-
1
-
2
-
3
4.4 调试碰到问题及解决办法
- 1.在调试计算正确率的函数时,结果总是不对,后来发现是写行参位置时和定义变量时搞错。不够仔细。
- 2.因为是小学,所以要控制随机产生的计算题的结果中不出现小数和负数,为了实现这个,刚开始在switch中加if语句,但调试出来会卡住,后面把if语句放在外面就行了。
4.5 大作业总结
- 1.还没开始做之前,完全没有头绪,但是当自己理清思路后
- 2.在输入非法字符怎么解决的问题上想了很久,后来百度得知输入非法字符时scanf=0,利用这个解决了问题。
- 3.刚开始不知道怎么产生一个范围内的随机数,后来百度知道可以用公式,如:要输出m<=r<n范围内的数字,用rand()%(n-m)+m;
- 4.刚开始不知道怎么产生随机字符,后来找到两种方法,第一种是把运算符放在数组里,随机产生数字对应数组中的各个运算符,这种方法我用在函数一中;第二种是利用switch来实现,我用在二,三函数中。
- 5.以后做题要积极一点,只有先去做才能去实现自己的想法,才能找出自己的漏洞。