C语言博客作业03--函数
1.本章学习总结
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
这段时间学习了函数的用法,在完成PTA作业的过程中发现并体会到使用函数可以使代码整体结构更加清晰明了,通过运用函数也可以减少不必要的代码使代码更加简洁,但学习过程中还存在一些不明白,对函数的运用及调用还不是那么熟练,经常出现编译错误的情况,几种变量的运用也不是那么熟练,希望通过接下来的努力来解决。
1.2.2 代码累计
2.PTA总分
2.1截图PTA中函数题目集的排名得分
2.2 我的总分:
145分
3.PTA实验作业
3.1 PTA题目1
本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。
3.1.1 算法分析
int fib( int n );
定义 item,第一个数字num1,第二个数字num2第二个数字,i
if n==1||n==2 //判断是否为第一项或第二项
then return 1
end if
if n>=3 then
for i=3 to n do
item=num1+num2; //计算前两项和
num1=num2;
num2=item; //按照题目更新num1和num2;
end if
return item;
void PrintFN( int m, int n );
定义 i,j,flag=1, 统计count;
while fib(i)<m //找到满足区间的第一个数
i++;
while fib(i)<=n //
if flag==1 //判断是否为第一个
then
printf fib(i);
flag=0;
end if
else //从第二个数开始需要输出空格
then
printf 空格+fib(i)
end if
count++;//统计Fibonacci数个数
i++;
end while
if flag==0 //若没有Fibonacci数
printf "No Fibonacci number"
end if
3.1.2 代码截图
3.1.3 测试数据
3.1.4 PTA提交列表及说明
-Q1:第一次没有仔细阅读题目,没有考虑到区间端点
-A1:提交了两次后发现问题
-Q2:上述问题改正后还是“答案错误”
-A2:观察测试点发现忽略了第一位和第二位,然后进行改正
4.大作业
题目:实现小学四则运算。
4.1.函数关系图
4.2.函数功能介绍
1.函数1&2
为了使主函数更加简洁,将开始与结束部分都封装在函数里面
2.函数3
当选择级别时输入不符合要求的数字,为了使程序可以正常进行,设计此函数,强制输入正确数字,然后根据正确的数字进入不同的级别
3.函数4
随机生成运算符
- 通过判断级别来生成不同种类的运算符
- 通过定义全局变量来将几个函数串联
4.函数5
进行级别1的出题
- 考虑到除数不能为0,及运算数据中出现0的无意义性,所以只随机产生1~9
- 考虑到小学运算不涉及有关负数运算及除法不整除的情况,所以增加了些条件进行判断
5.函数6
进行级别2&3的出题
- 因为级别2和级别3大体相同就封装在同一函数,根据判断进行执行
- 大体也与级别1相同
6.函数7
此函数作用就是校对答案
7.函数8
此函数作用就是计算正确率
4.3 运行结果截图
4.4 调试碰到问题及解决办法
- Q1:如何随机生成运算符
- A1:通过随机生成数字,每个数字对应一个运算符来解决
- Q2:如何快速地运算正确答案
- A2:因为输出的题目是字符,没有办法直接运算,所以定义了全局变量,通过符号对应的值进行运算(如Sign()和Check())
- Q3:当输入非法数据,如何进行提示,不使程序陷入瘫痪
- A3:刚开始就考虑到使用循环语句,强制输入正确数字,但一输入字符或字母就会陷入死循环,后来请教同学后解决了这个问题
- Q4:Sign( ) 函数中,因为级别2,3需生成两个运算符,程序出现一些bug,例如输出运算符为‘-’、‘+’,但正确答案计算的是‘+’、‘+’的结果
- A4:通过调试发现因为定义了全局变量,生成随机数时没有把两次分开,导致生成第二次运算符时,一并刷新第一个运算符的值
- Q5:无法输出%
- A5:查询资料,发现使用"%%"即可
4.5 大作业总结
头一次自己独立编写这么多行代码,刚开始时 ,因为题目要求的功能的多样性有点无从下手,但写完大致的函数关系图之后也渐渐的有了思路,但编写和调试过程中也经常出现一些大大小小的问题,也通过查询资料或是请教同学得以解决,比较遗憾的是当初设想的一些拓展功能没有实现,这次完成作业的过程中也暴露了一些问题,比如上课学到的知识在运用方面不是那么得心应手,希望之后更加努力,增加代码量,对之前的知识进行复习巩固,使自己进步。