C语言博客作业03--函数

0.展示PTA总分


1.本章学习总结

1.1 学习内容总结

  • 函数的声明:在main函数之前进行函数声明,如int abc(int a);分号切记不能漏),其中‘int’表示函数返回值的类型是int,‘()’ 可传入参数,当不声明 ‘()’中内容时,不可传入参数。
    此外,当类型为void时无返回值,但可以返回函数(即return;)。
  • 函数的定义:通常于main函数结尾进行函数定义,如int abc(int a){ (语句) },(切记这里大括号外均无‘;’)。
  • 全局变量:在程序开头main定义的变量,生存周期为程序开始到结束,其变量在所有函数中都能使用。
  • 局部变量:在某一函数中定义的变量,生存周期仅在这一函数中,一旦离开此函数,变量也就消失,再一次调用函数时该变量不会保留初值,仅在此函数中使用
  • 静态局部变量:在局部变量的基础上,当再一次调用该函数时,静态变量会保留原先的值并在本次函数调用中仍能使用

1.2 本章学习体会及代码量学习体会

1.2.1 学习体会

  • 也不难吧,只是把主函数语句放到其他函数再进行调用,只不过多了一些函数的返回、如何调用等等的判断吧。

1.2.2 代码累计

  • 如图;最后一个函数展开时为427

题目:小学生口算表达式自动生成系统

暂无设计扩展功能。

函数关系图如下:


3.函数功能及全局变量介绍

3.1.全局变量

  • 如图:
  • grade跟number为用户输入的年级以及题目数量。
  • count为出题过程中判断是否达到出题数量。
  • right为用户答对的题目数量,计数正确率用。

3.2.ListMenu()函数

  • 我直接在菜单函数中读取用户输入的年级跟题数,以便用户返回菜单重新开始时读取参数。

3.3 grade1()函数

  • 功能:根据要求出题。
  • 思路:通过随机数挑选题目类型,并在相应的题目类型下随机相应的运算数后调用适当的函数。

3.4 grade2()函数

  • 功能:根据要求出题。
  • 思路:同grade1()函数。

3.5 grade3()函数


  • 功能:根据要求出题,
  • 思路:同grade1()函数。

3.6 plus();times();reduce();devide();函数

plus();

times();

reduce();

devide();

  • 功能:对传入的参数进行对应的加、减、乘、除运算。
  • 思路:四者整体一样,即:
    1.输出算式
    2.读取用户答案
    3.判断正误
    4.输出话语
  • 其中reduce我添加了判断答案若为负数,则将减数于被减数换位。
  • devide我添加了判断答案若有余数,则需输入余数,若无,则无需输入。

3.7 Threenumbers()函数



  • 功能:实现三个数的所有混合运算
  • 思路:传入进行运算的三个数跟对应的题型(1:三个数连加。2:加减混合。3:一位数的四则运算。)
    1. 若是题型1,仅有加法
    2. 若是题型2,通过随机数跟switch函数随机运算符。
    3. 若是题型3,通过随机数先随机乘除再随机加减。

3.8 Accuracy_rate()函数

  • 功能:计算正确率。

3.9 Rightsentence();Wrongsentence();函数

  • 功能:答题完输出鼓励的话

4.运行结果截图,测试用例。

一年级:

二年级:

三年级:


5. 调试碰到问题及解决办法

1.问题:遇到三个数混合运算时,仅通过我的四个运算函数无法实现。办法:我又写了一个专门进行三个数混合运算的函数来实现该功能。
2.问题:返回主菜单重新开始做题发现正确率大于1。办法:忘了重新定义right=0;在ListMenu();中添加right=0;。
3.问题:1年级遇到减法时出现了负数。办法:在减法函数添加了对减数和被减数大小的判断。

6.大作业总结

  • 这个程序刚开始毫无头绪,只写了简单的菜单以及相应的输入等等,对于各个函数是否需要返回值和如何定义都是边写边解决的,这也导致我的代码显得较粗糙。
  • 对于要求的各个题型,绝大部分都能实现,但有的题型并不是很理想。
  • 从这次综合作业中,我觉得在以后编写代码过程中需先要有个清晰的思路,不妨拿笔来写一写,这也在编写代码过程定会更加清楚,简单。也会使得代码易于修改阅读。
posted @ 2019-11-03 12:15  1911-黄荣煌  阅读(232)  评论(1编辑  收藏  举报