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


    0.展示PTA总分

    1.本章学习总结

    1.1 学习内容总结

    • 1、函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数2种。例如scanf()、printf()、等为库函数,由C语言系统提供定义,编程时只要直接调用即可;而有些fact()函数,prime()函数,需要用户自己定义,属于自定义函数。
    • 2:调用自定义函数时,程序中必须有与之对应的函数定义。
    • 3:函数定义于主函数之外,分配有储存空间,独立于其他函数的形式。
    • 4:函数的一般形式:
    函数类型 函数名(形式参数表)/*函数首部*/
    {
        函数实现过程/*函数体*/
    }
    
    • 5:类型标识符函数名(形参表)———形参表可以为空,但花括号不能省略例:int fact(int n)——n为形参,形参只是一个占位符,标志着在形参出现的位置应该有一个什么类型的数据。
    • 6:函数调用函数名(实参表)——实参表与形参表相对应实参可以是常量、变量,还可以是表达式,实参与形参一 一对应,数目应相同,顺序应一致,初学者建议类型也一致。
    • 7:函数类型为void,表示不返回结果,函数体中可以使用没有表达式的return语句,也可以省略return。void类型的函数虽热不直接返回一个值,但它的作用通常以屏幕输出等方式实现。
      此外,在不返回结果函数定义中,void不能省略;否则,函数类型被默认定义为int。
    • 8、模块化设计时要遵循模块独立性的原则,即模块之间的联系应尽量简单。体现在:
      (1)一个模块只完成一个指定的功能。
      (2)模块之间只通过参数进行调用。
      (3)一个模块只有一个入口和一个出口。
      (4)模块内慎用全局变量。
    • 9、上文讲到了全局变量,全局变量是定义在函数外而不属于任何函数的变量,它对作用范围内所有的函数都起作用。一般情况下把全局变量定义在程序的最前面,即第一个函数的前面。而,局部变量则定义在函数的内部,它们的有效使用范围被局限于所在的函数内,使用局部变量可以避免各个函数之间的变量互相干扰,保证了函数的独立性。
      静态局部变量:是一种特殊的局部变量,它存放在静态储存区,生存周期会持续到程序结束,一旦含有静态局部变量的函数被再次调用,则静态局部变量会被重新激活,上一次函数调用后的值仍然保持着,可以本次调用继续使用,定义格式:static 类型名 变量表。

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

    1.2.1 学习体会:

    做题看书,看书做题。没有不理解的地方,就是遇到新题型需要思考良久而已。

    1.2.2 代码累计

    本次综合作业代码量:1023行

    2、综合作业

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

    2、本次作业函数关系图

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

    3、1全局变量:

    • num1,num2,num3,是3个随机数,其实每次进入分支函数的时候都会被重新赋值,只不过定义成全局变量,以后就不需要每个函数内都定义了。

    3、2 ListMenu函数

    • ListMenu,ListMenu1,ListMenu2,ListMenu3,是界面输出函数,分别输出主界面,一年级题目集界面,二年级题目集界面,三年级题目集界面。
      截图:

    3、3 GetChoice函数

    • GetChoice1,GetChoice2,GetChoice3,获取用户选择的函数,分别对应一年级中各题目集的选择,二年级中各题目集的选择,三年级中各题目集的选择。
      截图:

    3、4 Problem函数

    • Problem1,Problem2,Problem3...等Problem系列,针对各个不同的层次、多方面的问题题目集,在GetChoice获得选择后进去,实现各个题目集的提示,运算,判断,是检查小学生做题正确与否并记录正确率的函数。
      截图:







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

    一年级:

    • 整十数加一位数的加法:

      整十数减整十数的减法:

      两位数减整十数的减法

      10以内三个数连加:

      100以内连加连减混合运算:

    二年级:

    1-9以内的表内乘除法:

    整十数加整十数的加法(存在进位的)

    尾数是0三位数加法(和在一千以内的):

    整百数加减法(和超过一千的,退位的)

    10以内除法加法混合运算

    有余数的除法:

    三年级:

    三位数加三位数的加法(含连续进位的):

    一位数乘一位、二位、三位数:

    整十数乘整十数:

    一位数的四则运算:

    上图出现了一个9/6、3/2不能整除的情况,原因是随机随机到的数无法整除,而要使它可以随机到的数可以整除还需要再对程序进行修改,不过那个太过复杂了,这里仅仅是无视余数进行计算。

    两位数除以一位数(有余数):

    万以内的加减法:

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

    (1)在二年级表内除法处出现不能整除的情况,由于只有2个数易操作,于是加入判断if (num2 % num1 == 0)正常执行,否则 i--;continue;不输出任何内容而重新赋予随机数再判断。使得输出的随机数总能整除。
    (2)输出列表和提示的时候曾出现同一行出现多个内容的情况,判断是漏掉了 ,于是补上。
    (3)在生成1-9数字的时候出现过0的情况,于是把rand()%9改成(rand()%8+1),百位数则是将rand()%1000(会出现二位数和一位数的情况)改成(rand()%900+100),还有许多数据范围的修改,这里不重复列举,反正最后除数不为0啦,三位数就三位数啦,整十数就整十数啦,不会有0啦。
    (4)在输入用户题目输入的时候,输入1(即一道题目),回答之后会出现 ”输入N退出答题,否则继续答题“ 提示退出的情况,可就1道题,退出个鬼,于是在提示退出的语句前加上判断条件n!=1;还有最后一道题目的时候,提示退出,都最后一道题目啦,还退出个鬼,于是又补上提示退出条件i!=n;
    (5)统计正确率时,曾经是用小数计数,比如0.5 , 1.0 , 0.33,现在改为50.0%,100.0%,33.0%。
    (6)在程序快完成之际,发现程序在Window命令界面无法退出,只能返回上级主菜单,做题,返回上级主菜单,返回上级主菜单,于是改进为做完题目后提示输入N结束程序,否则输出主菜单并让用户继续做题。

    6.大作业总结:

    回顾这个作业编写过程,总结碰到问题及后续程序编写注意事项?
    (1)当除法出现不能整除的情况,如果只有2个数字操作,就可以加入判断if (num2 % num1 == 0)正常执行,否则 i--;continue;不输出任何内容而重新赋予随机数再判断。使得输出的随机数总能整除。
    (2)输出列表和提示的时候如果出现同一行出现多个内容的情况,判断是漏掉了 ,记得补上。
    (3)如果在生成1-9数字的时候出现过0的情况,就可以把rand()%9改成(rand()%8+1),百位数则是将rand()%1000(会出现二位数和一位数的情况)改成(rand()%900+100),还有许多数据范围的修改,这里不重复列举,反正最后除数不为0啦,三位数就三位数啦,整十数就整十数啦,不会有0啦。
    (4)统计正确率时,曾经是用小数计数,比如0.5 , 1.0 , 0.33,其实可以改为50.0%,100.0%,33.0%,这样易于阅读。
    (6)如果在程序快完成之际,发现程序在Window命令界面无法退出,只能返回上级主菜单,就说明有循环不能结束,于是应该加入一个判断条件break使循坏结束。

  • 相关阅读:
    mysql的用户权限设置
    Jmeter——BeanShell PreProcessor的用法
    zhlan--巧用Python中的正则表达式符号
    【直播预告】云栖直播:阿里热修复产品HotFix2.0升级详解
    双十一 手淘技术用了这几招
    用户说体验 | 关于阿里百川HotFix你需要了解的一些细节
    阿里百川码力APP监控 来了!
    淘宝直播技术分享:如何打造体验优秀的“直播+”产品?
    云栖大会上宣布即将开源的手淘Atlas什么来头?
    推进"五通一平":手淘技术"三大容器 五大方案"首次整体亮相 百川开放升级
  • 原文地址:https://www.cnblogs.com/zhangpucyll/p/11785424.html
Copyright © 2020-2023  润新知