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


    0.展示PTA总分

    1.本章学习总结

    1.1 学习内容总结

    函数的定义:
    函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种,例如scanf()、printf()等为库函数,由C语言系统提供定义,编程时只要直接调用即可;
    函数定义的一般形式为

    函数类型 函数名(形式参数表)      /*函数首部*/
    {
           函数实现过程           /*函数体*/
    }
    

    函数首部:
    由函数类型、函数名和形式参数表组成,位于函数定义的第一行。函数首部后面不能加分号,它和函数体一起构成完整的函数定义。
    例子5-1中函数首部为
    double cylinder (double r, double h)
    表面函数类型是double,也就是函数的结果类型;函数名是cylinder;函数又两个形参r和h,它们的类型都是double
    函数体:
    函数体体现函数的实现过程,有一对大括号内的若干条语句组成,用以计算,或完成特定的工作,并用return语句返回运算的结果。
    函数的调用:
    任何c程序运行,首先从主函数main()开始,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原先暂停的位置继续执行。
    函数调用的一般形式为:

    函数名(实际参数表)
    

    实际参数(简称实参)可以使常量、变量和表达式。例如,cylinder()中,使用变量radius和height作为实参(p96)。
    对于实现计算功能的函数,函数调用一般出现在两种情况下:
    ①赋值语句

    volume=cylinder(radius,height);
    

    ②输出函数的实参

    printf("%f",cylinder(radius,height));
    

    函数的形参必须是变量,用于接受实参传递过来的值;而实参可以是常量、变量或表达式,其作用是把常量、变量或表达式的值传递给形参。如果实参是变量,它与所对应的形参是两个不同的变量。实参是主调函数的,形参是自定义函数的,这两者可以同名,也可以不同名。
    按照C语言的规定,在参数传递过程中,将实参的值复制给形参。这种参数传递是单向的,只允许实参把值复制给形参,形参的值即使在函数中改变了,也不会反过来影响实参。
    实参和形参一一对应,数量应相同,顺序应一致
    函数结果返回
    函数结果返回的形式如下:

    return 表达式;
    

    return语句只能返回一个值。

    /*判断奇数偶数的函数*/
    int even (int n)
    {
    if(n%2==0)
    return 1;
    else
    return 0;
    }
    

    函数原型声明
    C语言要求函数先定义后调用,就像变量先定义后使用一样。如果自定义函数放在主调函数的后面,就需要在主函数调用前,加上函数原型声明(或称之为函数声明)。
    一般格式为:

    函数类型 函数名 (参数表);
    

    即与函数定义中的第一行(函数首部)相同,并以分号结束。
    如果在调用函数前,既不定义,也不声明,程序编译时会出错。

    不返回结果的函数
    在很多程序设计中,调用函数不是为了得到牟利个运算结果,而是要让它产生某些作用。
    不返回结果的函数定义:

    void函数名(形参表)    /*函数首部*/
    {
    函数实现过程   /*函数体*/
    }
    

    函数类型为void,表示不返回结果,函数体重可以使用没有表达式的return语句,也可以省略return。
    在不返回结果的函数定义中,void不能省略;否则,函数类型被默认定义为int。

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

    1.2.1 学习体会

    本章学习了函数的使用,通过使用函数,不仅使得操作简易化,大大减少了庞大程序中的错误和不清楚的问题,还能把我们的程序以更模块化的形式组织起来,从而利用C语言所支持的结构化程序设计。在学习的过程中,我感受到了编程与数学的巧妙结合,领悟到了思考的趣味性和重要性。

    1.2.2 代码累计

    本次综合作业代码量:377

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

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

    3.1.全局变量

    void menu();
    void gradeOne();//一年级
    void gradeTwo();//二年级
    void gradeThree();//三年级
    int grade;//年级
    int amount;//题目数量
    

    3.2.ListMenu()函数


    函数的功能是让使用者输入年级和题目数量,从而让系统编出相应难度和数量的题。主要用了scanf()函数、printf()函数和if-else语句

    3.3 函数2等

        一年级有如图四种题型,使用了随机数
    


        二年级有如图两种题型
    


        三年级有如图两种题型
    


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


    一年级的题目测试,所涉及的题目类型基本没有问题


    二年级的题目测试,对除法没有太细的讲究,所以出错了


    三年级的题目测试,所涉及的题目类型基本没有问题

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

    1.随机数不会用
    解决方法:高强度使用百度搜索终于学会
    2.一开始调试的时候,输入一个答案后所有的题目一起跳出
    解决方法:原来是switch语句忘记加上break;
    3.编辑函数时出现最多的问题其实是大括号的多余和缺少,这主要怪自己不细心

    6.大作业总结

    这次作业完全就是粗制滥造...之前请了假,整整一周没来上课,所以周末很晚才开始做这个任务,仓促之下只写了200行整,成果就是一个功能严重缩水的半半半成品,像什么输入某个东西退出程序那种的都没有,后面我将会好好完善。

  • 相关阅读:
    IntelliJ IDEA隐藏不想看到的文件或文件夹
    IntelliJ IDEA更改字体和大小
    Dubbo实践(一)入门示例
    部署Jar包到远程Maven仓库
    Linux网卡别名
    ORACLE NLS_LENGTH_SEMANTICS 参数的用途
    Oracle编辑数据时提示:这些查询结果不可更新,请使用ROWI或者SELECT……FOR UPDATE获得可更新结果
    Notepad++格式化JSON字符串
    Xshell配色为Ubuntu风格
    【剑指offer】判断一个序列是否是二叉搜索树的后序遍历,C++实现
  • 原文地址:https://www.cnblogs.com/9418wdnm/p/11786098.html
Copyright © 2020-2023  润新知