代码改变世界

C博客作业03--函数

2019-11-03 19:52  pluto1214  阅读(199)  评论(0编辑  收藏  举报

0.展示PTA总分

1.本章学习总结

1.1 学习内容总结

  • 函数分为自定义函数和库函数,自定义函数调用时需先声明,而库函数可直接调用如printf()
  • 函数声明包括函数类型,函数名和形式参数表和分号,如double cylinder(double r,double h);
  • 函数首部不包含分号,且每个形参前都要加上函数类型
  • 自定义函数中函数声明中的变量称为形参,而主函数中的变量称为实参
  • 实参可以是常量,变量和表达式,而形参只能是变量
  • 在不返回结果的函数中,可以用void类型的函数,如输出数字金字塔
  • 当需要使函数多结果返回时,需要定义全局变量,如复数的运算中需要返回实部和虚部的值
  • 静态局部变量可以保存上一次函数调用时变量的值,因此可以用来计算阶乘问题,如求10!
  • 当全局变量与局部变量同名时,局部变量起作用,当局部变量与复合语句中的局部变量同名时,后者起作用

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

1.2.1 学习体会

1.函数的调用可以使程序看起来更有条理,也能更方便的解决一些问题,例如阶乘问题和复数的运算,但函数的自定义比较困难,自己往往不知道该怎么自定义函数,这方面还要练习
2.函数内容学习的较快,做函数题时有些困难

1.2.2 代码累计

230行代码

2.综合作业

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

2.本次作业的函数关系图

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

3.1.全局变量

全局变量:studentAnswer,在自定义函数中学生输入答案,而在主函数中判断答案是否正确
choice1:记录用户输入的年级
count记录用户的答对题目数量

3.2.ListMenu(studentGrade, questionNumber)函数

生成可供学生选择的菜单

3.3 show_computerAnswer_and_get_input(studentGrade, sum)

获得计算机生成的答案和用户输入的答案,sum传递给i作为题号



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

一年级:

二年级:
三年级:

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

1.问题:每次生成的式子都相同。解决办法:用# include<time.h>和srand(time(NULL))使每次生成的数字不同
2.问题:运算符随机生成。解决办法:定义sign()%4四个数字分别对应4种运算符
3.问题:运算符不能用变量直接放在式子,计算机无法计算。解决办法:让sign=rand()%4直接对应四种运算,用reslut储存正确答案
4.问题:用户输入答案后,怎么跟正确答案比较。解决办法:定义全局变量studentAnswer
5.问题:对于2,3年级的题目,乘除法与加法要求的数字的大小不同。解决办法:判断sign是否为进入乘除法的值,再判断数字大小有无乘除法的要求,有的话重新生成数字

6.大作业总结

  • 本次大作业没有达到全部要求,但生成式子和判断对错都有体现
  • 函数运用过少,且在使用时不是很熟悉
  • 全局变量的使用可以使主函数的变量减少,但不能过多使用
  • 出现循环输出菜单时,可以再定义一个变量来控制是否输出菜单