zoukankan      html  css  js  c++  java
  • C语言博客作业03--函数

    0.展示PTA总分

    1.本章学习总结

    1.1 学习内容总结

    1.1.1 形参和实参

    • 形参:在函数定义中出现的参数可以看做是一个占位符,它没有数据只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。

      • 形参可以是变量,但不可以是表达式。
    • 实参:函数被调用时给出的参数包含了实实在在的数据会被函数内部的代码使用,所以称为实际参数,简称实参。

      • 实参可以是常量、变量和表达式。
    • 形参和实参一一对应,数量应相同,顺序应一致,类型最好也保持一致。

    1.1.2 函数类型

    • 函数的类型与其所返回值的类型一致,函数返回值是什么类型,函数就是什么类型的。

      • 例如我返回的值为2.5,是双精度类型的,那么我定义函数的时候就得用double来定义函数。
    • 有的函数是没有返回值的,这种函数用void来定义,当调用函数时直接执行该函数,不会返回值。

    1.1.3 变量的类型

    • 这里的变量类型不是整型和浮点型之类的,而是根据变量的作用范围来定义的变量类型。

      • 全局变量:定义在函数外而不属于任何函数的变量成为全局变量。全局变量的作用范围是从定义开始到程序所在文件的结束,它对作用范围内的所有函数都起作用。

        • 注意:虽然全局变量很方便,但是过多的使用全局变量会带来副作用,导致各函数间相互干扰!!!
      • 局部变量:定义在函数内部的变量成为局部变量。局部变量的作用范围被局限于所在函数内,一旦函数的调用结束,局部变量的值就会被系统回收

      • 静态局部变量:这是一种特殊的局部变量,它存放在静态储存区中,不会像普通局部变量一样因为函数调用结束而被系统回收,它的生存周期会持续到程序结束。一旦含有静态局部变量的函数被再次调用,则静态局部变量会被重新激活上一次函数调用后的值仍然保存着,可供本次调用继续使用。

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

    1.2.1 学习体会

    • 学了本章内容之后感觉函数真的可以极大地简化程序,而且错了的话还方便修改但前提是函数得写得好。
    • 有一点不太理解,如果所定义的函数不是void类型的话,但是没有函数返回语句,那么函数还能正常运行吗?

    1.2.2 代码累计

    • 本次综合作业代码量:23+29+40+60+41+79+47+40=359

    2.综合作业

    本次作业的函数关系图

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

    3.1.全局变量

    • 全局变量名:manu
    • 作用:用来在每一次做完一种题型之后通过让用户输入manu的值来判断用户下一步的选择。

    3.2.level()函数

    • 该函数的功能是打印出主菜单,并没有返回值。
    • 思路:几个简单的printf()语句就可以了。
    • 函数代码截图:

    3.3.level1()函数

    • 该函数的功能是通过用户在主函数main()中输入难度级别一年级后来输出相应题目供用户作答并统计正确率,每当用户做完一种题型后都会让用户做一次选择,选择下一步是要返回主菜单还是继续做题还是结束做题并退出。
    • 思路:通过用户在level1()函数中输入的题目类型和题目数量,运用switch()语句嵌套for()语句来输出相应题目类型和题目数量。并在每次for()语句结束后让用户输入一个manu的值来判断用户下一步的选择。
    • 函数代码截图:




    3.4.level2()函数

    • 该函数的功能是通过用户在主函数main()中输入难度级别一年级后来输出相应题目供用户作答并统计正确率,每当用户做完一种题型后都会让用户做一次选择,选择下一步是要返回主菜单还是继续做题还是结束做题并退出。
    • 思路:通过用户在level1()函数中输入的题目类型和题目数量,运用switch()语句嵌套for()语句来输出相应题目类型和题目数量。并在每次for()语句结束后让用户输入一个manu的值来判断用户下一步的选择。
    • 函数代码截图:






    3.5.level3()函数

    • 该函数的功能是通过用户在主函数main()中输入难度级别一年级后来输出相应题目供用户作答并统计正确率,每当用户做完一种题型后都会让用户做一次选择,选择下一步是要返回主菜单还是继续做题还是结束做题并退出。
    • 思路:通过用户在level1()函数中输入的题目类型和题目数量,运用switch()语句嵌套for()语句来输出相应题目类型和题目数量。并在每次for()语句结束后让用户输入一个manu的值来判断用户下一步的选择。
    • 函数代码截图:












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

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

      整十数减整十数的减法:

      两位数减整十数的减法:

      10以内三个数连加:

    • 二年级:
      1-9以内的表内乘除法:

      整十数加整十数的加法:

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

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

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

      一位数乘一位、二位、三位数,整十数乘整十数:

      整十数乘整十数:

      一位数的四则运算:

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

    • Q1:在写level1()函数中的switch()语句时,由于行数太多,没有注意看switch()语句的大括号,导致将case语句写到了switch()语句外,导致程序无法运行。
      A1:在经过检查后发现这个问题后及时修改,使程序可以正常运行。
    • Q2:在写level2()函数时,由于有除法的存在,而我忘记考虑除数不能为0,导致有时候程序会运行出错。
      A2:在我多写了几条语句使当除数为零时重新对除数赋值一个不为零的数,解决了这个问题。
    • Q3:在写减法这类型的题目时,由于忘记考虑小学生没有负数的概念,导致程序有时候会出现答案为负数,这虽然不会影响程序的运行,但是小学生不一定会写。
      A3:运用if()语句在对当答案为负数时对减数和被减数值互换,解决了答案出现负数的问题。
    • Q4:在写除法这块题目时,由于忘记考虑小学生没有小数这一概念,导致题目所得答案会出现小数,而且由于我定义的变量都是整型,导致虽然正确答案有小数,但是程序所给的正确答案却没有小数,使得最后输出正确率时出现错误。
      A4:在对当除法答案出现小数时对两个变量重新赋值,使其答案为整数,解决了问题。

    6.大作业总结

    • 做完这个大作业,我才真的感觉到过去在代码量上的不足。因为代码量的不足和对各种语句的不熟悉,导致我这个大作业写了一千行,感觉太复杂了,不够简洁。
    • 做完了这个大作业,感觉这跟过去的代码完全不是一个级别的,如果不用心投入的话,很容易写到一半思路就断了。所以我觉得有必要锻炼一自己的专注度。
    • 做个总结的话就是:代码量还是不足,对各种语句的运用还是不够熟练,今后要加强这两方面的练习。
  • 相关阅读:
    setsid
    dup
    信号量
    linux标准输入输出
    linux守护进程范例
    c++字符串操作
    浏览器缓存
    bfc
    苹果手机自制铃声
    vue-cli 源码解读
  • 原文地址:https://www.cnblogs.com/Kevin2001/p/11734789.html
Copyright © 2011-2022 走看看