第三次作业
1.本章学习总结.
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1学习体会
这两周学习了函数有关的知识,预习的时候对于函数中函数定义和各种不同变量的使用认识很模糊,感觉使用函数写代码很会很复杂,但开始做题以后发现函数题与前几周题目的做题方法没有太大的区别,只是将代码某些功能的实现过程写在了不同的函数定义下,所以感觉使用函数的代码更容易发现存在的错误,因为每一个函数保持独立,在测试数据的时候就可以发现具体是哪一个函数存在问题,然后进行改正。
1.2.2 代码累计
2.PTA总分
2.1截图PTA函数结构的排名得分
2.2 我的总分
- PTA总分:145分;
3.PTA实验作业
3.1 PTA题目1
实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacc数。
3.1.1 算法分析
int fib(int n)
定义i来判断累加的次数,k为两项中前一项的值,j为后一项的值,sum为两项累加结果;
if n=1后者n=2 数列第一第二项均为1;
for 前两项累加计算第三项 循环
return sum;
void printFN(int m,int n)
int num来传递fib(int n)函数
int count计算范围内的Fibonacci数的个数
for 输出范围内的Fibonacci数
if count不等于0,无Fibonacci数
3.1.2 代码截图
3.1.3 测试数据
3.1.4 PTA提交列表及说明
*Q1:测试数据时Fibonacci数列前两项为总是为1,2.
*A1:因为采用了累加的方法用sum存放前两项的和,所以第二项总是无法为1,后来将数列前两项作为特殊情况,写在了循环累加的前面,保证数列第1,第2项均为1。
*Q2:最后一个数字后面有空格输出
*A2:引入新的变量count控制,只有在输出第一个数count=1时前面无空格,其后每一个数字前面都输出一个空格。
4.大作业
4.1 函数关系图
4.2 函数功能介绍
1.函数1
功能:在进入做题前给予用户充分提示,让用户知道下一步如何操作
2.函数2&函数6
函数3为输出随机生成的算式以及输入用户的回答
两个函数功能类似```
![](https://img2018.cnblogs.com/blog/1474670/201811/1474670-20181113224357758-656829715.png)
![](https://img2018.cnblogs.com/blog/1474670/201811/1474670-20181113224410272-603998963.png)
####3.函数4&函数5
```功能:函数4为随机生成对应等级的随机数
函数5为随机生成对应等级的运算符```
![](https://img2018.cnblogs.com/blog/1474670/201811/1474670-20181113224636275-129135094.png)
####4.函数3
```功能:计算随机给出算式的正确答案,以判断用户回答是否正确
![](https://img2018.cnblogs.com/blog/1474670/201811/1474670-20181113224834399-618690047.png)
####5.函数7&函数8
```功能:输出答案正确与错误的提示
思路:用生成随机数来随机出现不同的提示语,让用户觉得程序更有趣。```
![](https://img2018.cnblogs.com/blog/1474670/201811/1474670-20181113235858171-748074073.png)
####6.函数9
```功能:挑战结束语```
思路:题目完成或者中途退出都会出现,让用户可以随时结束挑战。
![](https://img2018.cnblogs.com/blog/1474670/201811/1474670-20181113235921021-1385807858.png)
### 4.3 运行结果截图
![](https://img2018.cnblogs.com/blog/1474670/201811/1474670-20181113234318578-1973593098.png)
![](https://img2018.cnblogs.com/blog/1474670/201811/1474670-20181113234333188-531601973.png)
### 4.4 调试碰到问题及解决办法
*Q1:开始写的时候最大问题是不懂如何生成随机数
*A1:百度了c语言中生成随机数的方法,然后又问了会用随机数的同学,才懂如何生成不同范围的随机数;
*Q2:学会生成随机数后还是不会如何生成随机运算符
*A2:百度了生成随机运算符的方法,需要引入数组来储存运算符,不太会用,所以选择用switch语句判断生成的1~4的随机数,不同的随机数返回不同的字符,来代替数组生成随机运算符的方法;
### 4.5 大作业总结
```开始做大作业的时候没什么思路,虽然函数的pta作业完成的比较顺利,但因为pta里面的函数都都已经有了基本框架,main()函数和其他函数定义,所以到大作业中这些也要自己完成时确实很懵。最开始我只定义了三个函数,就是开始菜单,生成随机数和输出算式,结果写到一半就发现main()函数下内容越来越多,然后才发现需要定义其他函数去实现不同的功能,所以一边写一边定义函数。第一次写完编译的时候有一大堆的错误,然后只能对着一行行改,同时也知道了自己在写代码过程中很多不规范的地方。这次作业虽然用了很多时间完成,程序也确实还有可以再完善的地方,但基本的功能完成也让我觉得对函数等方面的知识有了更深的了解,比如选择使用全局变量和局部变量,生成随机数以及用函数写代码时框架的构造。以后写代码还是需要先讲大致的思路整理出来,先把代码的基本框架构造出来,然后再一点点往里面加入一些细节的东西,去完善程序的功能,这样写代码的效率才会高而且代码的质量也有保证。```