博客作业--函数

0.PTA总分

1.本章学习总结

1.1 学习内容总结

  • 1.函数的定义:函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种。例如scanf()、printf()等为库函数,由c语言系统提供定义,编程时只要直接调用即可;cylinder()、fact()需要用户自己定义,属于自定义函数。

  • 2.从函数实现计算功能角度来看,C语言和数学上的函数概念十分接近。数学中函数的自变量 C语言中称为函数参数,数学中函数f(x)计算后有结果值,C语言中必然为某一种数据类型,称其为函数类型。

  • 3.函数首部由函数类型、函数名和形式参数表组成,位于函数定义第一行。形参表中各个形参用逗号分隔,每个形参前面的类型必须分别写明。函数的形参的数量可以是一个,也可以是多个,或者没有形参。

  • 4.函数首部不能加分号,它和函数体一起构成完整的函数定义。

  • 5.任何c程序执行,首先从主函数main()开始,如果遇到某个函数的调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后从原先暂停的位置继续执行。

  • 6.函数定义时,位于其首部的被称为形参,主调函数的参数被称为实参。程序运行到函数调用时,实参的值依次传给形参,这就是参数传递。

  • 7.函数的形参必须是变量,实参可以是常量或表达式,实参和形参一一对应,数量应相同,顺序应一致,初学时建议类型也应一致;return可以是结束函数的运行,也可带着运算结果返回主调函数,return语句只能返回一个值。

  • 8.C语言要求函数先定义后调用;如果在调用函数前,既不定义也不声明,程序编译时会出错。

  • 9.函数类型为void,表示不返回结果,函数体中可以使用没有表达式的return语句,可以省略return;在不返回结果的函数定义中,void不能省略;否则,函数类型默认定义为int;void类型的函数,如果省略了return语句,当函数中所有语句都执行完毕时,遇到最后的大括号即自动返回主调函数。

  • 10.局部变量:C语言中把定义在函数内部的变量称为局部变量;局部变量的有效作用范围局限于所在的函数内部。形参是局部变量;
    使用局部变量可以避免各个函数之间变量相互干扰。

  • 11.全局变量:定义在函数外耳不属于任何函数的变量称为全局变量。全局变量的作用范围是从定义开始到程序所在文件结束,他对作用范围内所有函数都起作用。
    一般情况下把全局变量定义在程序的最前面,即第一个函数前面。

  • 12.静态局部变量:存放在静态储存区,不会像普通局部变量那样因为函数调用结束而被系统回收,它的生存周期会持续到程序结束。由于存储单元被保留,一旦含有静态局部变量的函数被再次调用,则静态局部变量会被重新激活,上一次函数调用后的值仍然保留着,可供本次调用使用。静态局部变量格式:static 类型名 变量表.
    静态变量赋初值只在函数第一次调用时起作用,若没有赋初值,系统将自动赋0。

1.2 本章学习体会及代码量

1.2.1 学习体会

随着函数的学习,编程的魅力也一点一点被发掘出来了,函数的学习不仅仅是教会我们一个计算方法,也是让我们知道如何去简化我们的程序,使它更节省空间;

函数的出现让我们的代码可读性提升了一个空间,同时我们能使用的方法也越来越多,我们能去做的题也越来越多。

1.2.2代码量

周数 代码量
500~600
十一 840~910
代码总量 1340~1510

2.综合作业

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

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

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

4.1.全局变量

  • 1.函数功能:自动生成不同年级的口算题并对比答案计算正确率
  • 2.全局变量:count
    是为了计算错误题目个数,方便最后算正确率
    全局变量:all
    每个函数计算正确率

4.2.ListMenu()函数

展示各个年级以及它们的代表数字

4.3.oralArithmeticfunction()函数

  • 功能:选择年级以及想要的题目量,以方便进入下一步函数,
    同时如果选择的年级并没有则输出错误提示
  • 思路:以数字确定年级,输入一个变量flag以判断输入是否正确

4.4.gradeOne函数

  • 功能:生成一年级题目,对比答案,计算正确率
  • 思路:以数组存放运算符,以便随机使用,再通过随机数生成计算,通过统计错误的题目数量,计算正确率



4.5.gradeTwo函数

  • 功能:生成二年级题目,对比答案,计算正确率
  • 思路:以数组存放四个运算符,以便随机使用,再通过随机数生成计算,通过统计错误的题目数量,计算正确率




4.6.gradeThree函数

  • 功能:生成三年级题目,对比答案,计算正确率,同时开始对除法中除0问题进行排查
  • 思路:以数组存放四个运算符,以便随机使用,再通过随机数生成计算,通过统计错误的题目数量,计算正确率,同时在计算前判断除数是否为零




5.运行结果测试

  • 一年级:

  • 二年级:

  • 三年级:


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

  • 1.首先是switch因为我case那数字加了‘’,所以程序一直进不去一直显示错误;后面还是被提醒才发现错在哪
  • 2.函数调用()中写错很多次,还有大括号一直忘记
  • 3.计算中符号输入错误;数组中的运算符位置确定好后就修改完成
  • 4.忘记调用符号,一些数据没有初始化就使用
  • 5.还有一个不知道是我的电脑问题还是程序问题,就是答完以后提示有时候会出现两次,这个我还不知道为什么

7.大作业总结

这次的大作业对我真的很困难,因为对应每个要求的逻辑理解我有时会考虑特别多,这次的代码是我改了四五次后的结果,这个改不是调试修改,而是删了所有的重新打,其中最长的一次是我打了400行左右,发现问题有点多,需要修改得地方太多了,所以没办法;
其次就是调试,我不记得自己改了多少次了,但是多是一定的,各个数据的调试以及逻辑,该怎么处理有时是我的一个突然出现的想法,然后去尝试;
这次的大作业代码量很多,花费时间也很长,但是最后还是打完了,实在是松了口气

posted on 2019-11-03 22:55  linggu  阅读(359)  评论(0编辑  收藏  举报