C语言博客作业03--函数
1.本章学习总结(2分)
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
相比之前的课程,函数的更为抽象,比之前的难理解,刚开始不太懂函数的传参这个过程是怎么传的,现在也有点懵,只能说一知半解。还有局部变量和全局变量区分不开,但是看了书之后就理解了。
1.2.2 代码累计
2.PTA总分(2分)
2.1截图PTA中函数题目集的排名得分
2.2 我的总分:
145
3.PTA实验作业(1分)
3.1 PTA题目1
要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。
3.1.1 算法分析
写出fib函数
int 定义j,k,i,s。
赋值j=k=1
for 1 to n
计算下一项的值并转换下下项为下一项
j=k j是前一项
k=s k是j的下一项
s=j+k s是k的下一项
return s ; 返回函数值s
PrintfFN函数
int 定义j,k,i=1,s=0,count=0;
j=k=1;
for 1 to n;
计算下一项的值并转换下下项为下一项
j=k j是前一项
k=s k是j的下一项
s=j+k s是k的下一项
if(s>=m&&s<=n) 如果s的值在(m,n)的范围内
count++; count为满足--s的值在(m,n)的范围
if(count==1)
{
if(n==1) 处理如果n=1的情况,输出两个1
printf("%d %d",s,s);
else
printf(" %d",s) 如果n不等于1,那么空一格再输出s
}
if s>=n 如果s已经大于n了再加上去也不在m--n的范围里了
break 结束程序
if count ==0 如果范围内没有一个斐波那契数列
printf("No Fibonacci number"); 输出
3.1.2 代码截图
3.1.3 测试数据
3.1.4 PTA提交列表及说明
·Q1 : 一开始把第三项s赋值1导致第一项和第二项需要分开讨论
·A1 : 后面把s的初值赋为0 然后再同样用转换关系式转换项
·Q2 : 没考虑到m,n都为1的情况输入的是两个1。
·A2 : 判断count和n是否为1,如果都为1输出1 1。
4.大作业(5分)
题目:实现小学四则运算。
4.1.函数关系图
4.2.函数功能介绍
1.main函数,里面运用了时间函数,并接受mathcaculate函数的结果
2.mathcaculate函数
我在这个函数里做了这个运算的大多数事
首先是输入一些提示,来提示用户正确输入
接下来是判断等级进行相应的if,还有用for根据用户输入的题目数n循环做题
然后是随机产生数的运算符,生成算式并判断结果和用户输入的答案是否相等,再根据两者是否相等输出不同语句
因为题目做多了看的很乱,所以我使用了清屏函数和暂停函数。
还有让用户每做完一题选择继续或者退出
最后计算用户的正确率并输出
3.rightMessage函数
使用switch-case语句,当用户输入正确答案时调用,输入随机语句鼓励。
4.wrongmessage函数
同样运用switch-case,在用户输入错误答案时输出正确答案和随机语句鼓励。
4.3 运行结果截图
输入错误难度时直接结束计算
这个过不去
4.4 调试碰到问题及解决办法
1.如果难度输入错误;
解决办法:难度输入错误时直接结束计算
2.答案输入非法字符:
这是我的想法,但是解决不了这个问题。
3.每做完一题要有退出选项
用了flag变量来控制程序的进行,如果选择1 继续,则flag=1, 其他则falg=0
如果flag==1则程序继续,如果flag==0则程序结束并输入提示
4.5 大作业总结
因为对函数的定义一开始还是模糊所以开始动手做花了太多的时间在看书和请教同学上,花了比较多的时间,然后就是对于一些不合法输入的总是处理不好,考虑的不够周全,还有程序的美观度,没有去特别设计,自己写总结,对之前的代码进行重新阅读,感觉还是对这类题的思路清晰了很多。