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


    0.展示PTA总分(0----2)

    1.本章学习总结(2分)

    1.1 学习内容总结

    • 函数的定义

      • 函数定义的一般形式为:

    函数类型 函数名(形式参数表) ##函数首部

    {

    函数实现过程 ##函数体

    }

    • 函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。

    • 接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数。

    • 将代码段封装成函数的过程叫做函数定义。

    • 函数的分类

      • 接受类型

        • 有参函数——如果函数需要接收用户传递的数据,那么定义时就要带上参数。

        • 无参函数——如果函数不接收用户传递的数据,那么定义时可以不带参数。

      • 返回类型

        • 有返回结果的函数——需要返回一个特点的值。

        • 不返回结果的函数——有的函数不需要返回值,或者返回值类型不确定(很少见),那么可以用 void 表示。void是C语言中的一个关键字,表示“空类型”或“无类型”,绝大部分情况下也就意味着没有 return 语句。

    • 函数的结构

      • 函数的首部

    函数首部由函数类型、函数名和形式参数表组成,位于函数定义的第一行。函数首部中,函数名是函数整体的称谓,需用一个合法的标识符表示。

    函数类型指函数结果返回的类型,一般与return语句中表达式的类型一致。

    • 函数体

    函数体体现函数的实现过程,由一对大括号内的若干条语句组成,用以计算,或完成特定工作,并用return语句返回运算的结果。

    • 函数的调用

      • 函数调用过程

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

    • 函数调用的形式

    函数调用的一般形式为:函数名(实际参数表)

    实际参数(简称实参)可以是常量、变量和表达式。

    • 参数传递

    函数定义时,位于其首部的参数被称为形参。主调函数的参数被称为实参。形参除了能接受实参的值外,使用方法与普通变量类似。形参和实参必须一一对应,两者数量相同,类型尽量一致。程序运行遇到函数调用时,实传参的值依次传给形参,这就是参数传递。

    • 函数结果返回

    函数结果返回的形式为return 表达式;

    先求解表达式的值,再返回其值。一般情况下表达式的类型与函数类型应一致,如果两者不一致,以函数类型为准。return语句的作用有两个:一是结束函数的运行;二是带着运算结果(表达式的值)返回主调函数。

    • 变量类型

      • 局部变量

    定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。

    • 全局变量

    在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。

    • 静态局部变量

      • 静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。

      • 静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。

      • 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。

    • 函数使用注意点

    C语言不允许函数嵌套定义;也就是说,不能在一个函数中定义另外一个函数,必须在所有函数之外定义另外一个函数。main() 也是一个函数定义,也不能在 main() 函数内部定义新函数。

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

    1.2.1 学习体会

    经过对本章知识的学习,我发现函数是C语言基础语法中很关键的语法之一,它能够使代码更加便捷且具有更好的可读性。在程序中,一个函数就是一个业务逻辑块,是面向过程,单元模块的最小单元,而且在函数的执行过程中,形参,实参如何交换数据,如何将数据传递出去,如何设计一个合理的函数,不单单是解决一个功能,还要看是不是能够复用,避免重复造轮子。所以如果前期没打好基础很难深入往前走。这是个人的一点学习心得,希望能更好的运用到学习中去。C语言是一门很有用的、对于我们的就业很实际的语言,学习好C语言是一项必须而实际的任务。我们必须要好好掌握。

    1.2.2 代码累计

    本次综合作业代码量:300

    2.综合作业(8分)

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

    本次作业的函数关系图

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

    3.1.全局变量

    全局变量:整型变量k

    作用:在主函数的输入中用于保存用户所选择的年级,在doExercise(int n)函数中用于输出正确率输出语句中的年级题型类别,在该程序中将其设为全局变量,是为了保证其在主函数和doExercise(int n)中都能够被成功调用。

    3.2.ListMenu()函数

    函数功能:输出年级选择的菜单栏目。

    函数思路:使用分层的连续printf语句输出菜单栏。

    3.3.doExercise(int)函数

    函数功能:输入用户想要作答的题目数量并输出用户的答题正确率。

    函数思路:先输入题目数量,结合test(n)函数对统计作答正确的题目数量变量score的值进行递增或不变,最后结合正确率计算表达式计算出正确率conter的值,并连并年级题型类别输出。

    3.4.test(int)函数

    函数功能:根据用户在main()函数中输入的年级类别来随机产生对应的题型。

    函数思路:先根据用户输入的年级类别将该函数分为3个不太区域,接着在每个区域中使用随机数选择不同题型,在题型编辑中结合随机数和随机运算符,组成对应题型。

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

    一年级

    二年级

    三年级

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

    1.问题:在主函数中定义的变量k在doExercise(int n)函数的输出语句中无法调用。

    解决办法:将k设为全局变量。

    2.问题:在test(n)题型产生函数中的一年级题型中连加/减题目中忽略了连减结果为负数的问题。

    解决办法:利用if-else语句将连减结果为负数时的表达式进行转变。

    6.大作业总结

    本次大作业结合了开学到本章节所学习的所有内容,且考验了作答者的逻辑思维能力。程序使用了基础语法的结合和关联,使各部分知识都能够得到巧妙的应用。语法总结实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际实验操作才能完成。所以我们要有效地利用课下语法总结实验的机会,充分掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基矗。

  • 相关阅读:
    KlayGE的PNTriangle例子支持Instanced Tessellation了
    KlayGE中的延迟渲染(一)
    KlayGE中的延迟渲染(五)完结篇
    KlayGE中的延迟渲染(二)
    KlayGE中的延迟渲染(三)
    KlayGE中的延迟渲染(四)
    几大移动平台的纯C/C++开发调查
    用2个float模拟double
    开放的3D扫描人头数据!
    IP 点分十进制表示法
  • 原文地址:https://www.cnblogs.com/yushanbaiyi/p/11788944.html
Copyright © 2020-2023  润新知