1.本章学习总结#
1.1 思维导图##
1.2 本章学习体会及代码量学习体会##
1.2.1 学习体会###
本周学习了函数,学到了一种可以解决重复问题的方法,通过函数设计,大大简化了代码,增强了代码的可读性。学习函数可以来编写较多功能的代码。若我们不需要函数返回任何值可以用void类型的函数。初学函数时,并没有领略到函数的好处,在编写大作业时,就有感受了。调用函数比一次次编写相同的代码要方便许多,实现函数编写后,只要调用函数即可实现函数功能,函数的学习在今后的运用中也是个重要内容。也学习到了局部变量、全局变量、静态局部变量,大作业中正确个数的统计使用全局变量是一个明智的决定,解决了多个函数同时使用同一个变量的情况,使用我们不要仅仅拘泥于局部变量。
1.2.2 代码累计###
2.PTA总分#
2.1截图PTA中函数题目集的排名得分##
2.2 我的总分##
函数:145
3.PTA实验作业#
3.1PTA题目1##
使用函数输出指定范围内的Fibonacci数
本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。
3.1.1 算法分析###
int fib( int n ) //定义返回第n项Fibonacci数的函数
if(n==1||n==2) then //第一项和第二项都是1
返回1
else //以后的每一项都是前面两项的和
return fib(n-1)+fib(n-2);
void PrintFN( int m, int n ) //定义输出Fibonacci数列的函数
定义计算Fibonacci数的个数的count,标志第一项数的flag,Fibonacci数的i
while(fib(i)<m) //找到fib(i)大于m时的i值
i++;
end while
while(fib(i)<=n)
if(flag==0) then //第一项前面不输出空格
printf("%d",fib(i));
flag=1;
else if(flag==1) //除第一项外数字前面都输出空格
printf(" %d",fib(i));
end if
count++;
i++;
end while
if(count==0)
printf("No Fibonacci number");
3.1.2 代码截图###
3.1.3 测试数据###
3.1.4 PTA提交列表及说明###
- Q1:如何实现每一项都是前两项的和
- A1:在fib函数中使用fib函数实现每一项是前两项的和
- Q2:怎么找出大于m和小于n的临近值Fibonacci数
- A2:使用两个while循环,第一个循环找出大于m的最小Fibonacci数,第二给循环找出小于n的最大Fibonacci数
4. 大作业#
题目:实现小学四则运算。##
4.1.函数关系图##
4.2.函数功能介绍##
1.函数1###
- 代码截图
函数功能:调用三个不同等级的运算函数,计算用户答题的正确率
2.函数2###
- 代码截图
函数功能:先随机生成两个一位数,再随机生成加减乘除一步四种运算式,最后判断用户的回答和正确答案是否相等,输出对用户的祝贺语或提示用户回答错误给出正确答案,统计right,wrong的值
3.函数3###
- 代码截图
函数功能:先随机生成三个两位数,再随机生成加减乘除两步四种运算式,最后判断用户的回答和正确答案是否相等,输出对用户的祝贺语或提示用户回答错误给出正确答案,统计right,wrong的值
4.函数4###
- 代码截图
函数功能:先随机生成三个三位数,再随机生成加减乘除两步四种运算式,最后判断用户的回答和正确答案是否相等,输出对用户的祝贺语或提示用户回答错误给出正确答案,统计right,wrong的值
5.函数5###
- 代码截图
函数功能:用户答案,并判断输入的是不是非法字符,若是,提醒用户,让用户再次输入,直到不是非法字符
4.3运行结果截图##
4.4调试碰到问题及解决办法##
Q1:如何随机输出加减乘除四种运算式
A1:使用switch语句,通过随机产生1,2,3,4这四个数,来进行分支,随机输出加减乘除不同的运算式
Q2:计算正确率时,right个数和wrong个数统计出错,导致正确率错误
A2:因为三个函数都随时可能被调用,所以right,wrong的值应该沟通起来,所以想到了把right,wrong设为全局变量,供三个函数共同使用
Q3:三位数生成时有一位数的生成
A3:把a=rand()%1000改成a=100+rand()%900
Q4:非法字符的输入处理
A4:参考了同学的博客,使用scanf判断是否等于1,不等于1则非法字符,再使用getchar让用户再次输入
4.5大作业总结##
1.我的代码实现了每次运算结束后都能返回菜单,而且用户可在一次一级运算后随意选择其他级运算,而不是只能继续一级运算
2.函数的使用还是比较单一,没有实现相同功能的代码一起组成一个函数,代码的拓展性不是很强
3.非法字符的处理是我在这次大作业中的最大收获,虽上课时了解到若输入非法字符,scanf的值不等于1,但实际操作起来还是不能实现该功能,在参考了同学博客后,受益良多