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

    0.展示PTA总分

    1.本章学习总结

    1.1 学习内容总结

    ·函数的定义
    ·函数包括库函数和自定义函数
    例如:scanf()、printf()...等为库函数;cylinder(),fact()...属于自定义函数。
    ·函数定义的一般形式:

    ·函数的首部
    由函数类型、函数名和形式参数表组成。
    函数类型指函数结果返回的类型,一般和return语句中的表达式类型一致。
    格式为:类型1 形参1,类型2 形参2....
    例如:int gcd(int x, int y)
    若为void型则表示不用返回值,例如:void PrintFN(int m, int n)
    注:在函数首部后面不能加分号
    ·函数体
    由一对大括号内的若干条语句组成,用以计算完成特定的工作。
    ·函数的调用
    来看看书本上的例题:

    首先我们要进行函数声明,再来是函数调用,最后为函数定义。
    首先C语言程序执行会先从main()函数开始,按顺序往下走,函数调用当遇到cylinder()函数调用时,main()函数也就是主调函数暂停执行,转而执行cylinder()函数。参数传递在进行cylinder()函数时所得出的结果会通过result来返回到main()函数中使之判断继续执行。
    ·实参与形参
    ·实参:主调函数的参数
    实参可以是常量、变量和表达式,在上述例题中可知radius和height为实参
    ·形参:调用函数的参数
    形参必须是变量,从而能够接受实参的值,其使用方法大致与普通变量一致
    两者联系
    形参和实参可同名也可不同名但必须一一对应,两者数量相同,类型尽量一致。
    应用案例(利用函数来求输入数值number以内的全部素数)

    ·局部变量和全局变量
    ·局部变量
    使用范围:所在的函数内(形参即为)
    优点:确保了各函数之间的独立性,避免函数之间相互干扰
    缺点:自由度较小,不同函数之间的数据交流较不方便。
    ·全局变量
    使用范围:从定义开始到程序所在文件结束,即所有函数都起作用。
    优点:解决多个函数间的变量共用。
    缺点:过多的使用全局变量会使得各函数间相互干扰
    注:在局部中,局部变量优先于全局变量
    来看个例子更加了解局部变量和全局变量

    此时输入结果为4 7,我们可以知道在局部变量中,局部变量优先于全局变量
    ·变量生存周期和静态局部变量
    变量生存周期:
    (1)对于局部量来说
    函数调用时,系统自动为其局部变量分配存储单元。一旦函数调用结束,所有分配的储存单元将会被收回。
    自动变量定义:
    auto 类型名 变量表(auto可以省略)
    即我们定义的局部变量都是自动变量。
    (2)对于全局变量来说
    它的生存周期为整个程序执行周期。
    静态变量:
    在静态储存区还具有静态局部变量。它的生存周期会持续到程序结束,一旦被再次调用,则静态局部变量会被重新激活。
    静态变量定义格式:
    static 类型名 变量表

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

    1.2.1 学习体会

    我认为函数这一章主要要弄懂关于数值传递,以及建立新的函数声明,明白如何去调用函数这几个方面吧。在pta上的作业我觉得函数要比循环的简单,循环的题目有时候我一个晚上都写不出一道题来...害...emmmm,反正再怎么样,我都会保持我当初的那一份初心坚持下去的。

    1.2.2 代码累计

    函数这一部分:997

    2.综合作业

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

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

    ·InputTips():进行友好提示
    ·RandomNumbers():用于生成随机数和随机符号并算出正确答案,并且判断数据是否正确,以及其次数。
    ·CorrectTimes():用于判断用户答案是否正确

    3.1.全局变量

    ·grade:关于用户的年级
    ·level:用户所需要的难度

    3.2.

    ·InputTips():进行友好提示

    3.3

    ·RandomNumbers():用于生成随机数和随机符号并算出正确答案,并且判断数据是否正确,以及其次数。
    利用switch()嵌套结构来进行对于不同年级不同难度进行选择,并输出不同的随机数和随机符号
    对于答案是否正确给出判断,并且给出温馨提示。

    3.4

    ·CorrectTimes():
    根据不同的答题正确次数进行温馨提示使界面友好。

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

    一年级:




    二年级:



    三年级:


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

    问题1:
    关于减法:在随机数生成中经常会出现前者数字小于后者数字,即所得出了负数,而小学生是没有学习负数这一门功课的。
    初步想法:加入if语句,若a<b则引入temp使两者交换,但是在三数连减中我并不知道该如何实现。
    问题2:
    关于随机数的范围:我一直认为若使得随机数范围在2~4之间代码应该这么写:i=2+rand()%4。结果不尽人意,于是我上网查了一下,为i=rand()%2+2。按照网上的解释,大致内容为:

    问题3:
    关于如何把k[i]变为一个可读取的符号:
    我尝试直接把k[i]放入数值中间进行计算正确答案,很明显,这是错误的。之后我就把k[i]可能为什么符号列出来了。

    6.大作业总结

    说实话,这次作业我自己写得很不满意也写得很崩溃。很多我想表达出来的内容我都没有办法去表达出来。调试出来也是漏洞百出,由于自己的惰性,并没有提早去写它所以没能自己慢慢的一点点去调试去完善。从而让这个系统更完整。对于现在的我来说,这种综合性作业确实具有挑战性,我也会在这次提交之后利用课余时间去更好的完善它。

  • 相关阅读:
    ORACLE的自定义排序
    PDA上一个UDP通讯客户端
    构造
    sort()的使用
    VC2012链接mySql
    宏的一些代码
    试卷
    疑问
    代码1
    vector学习
  • 原文地址:https://www.cnblogs.com/lz0149/p/11746660.html
Copyright © 2011-2022 走看看