c语言博客作业-函数
0.展示PTA总分
函数
1.本章学习总结
1.1 学习内容总结
1函数的定义:
函数是一个可以完成特定工作的独立程序模型,包括库函数和自定义函数;例如scanf()和printf()等为库函数;是由C语言系统提供定义,在编程时直进行直接调用,而一些函数需要我们自己进行编译的则为自定义函数。
一般形式
函数类型 函数名(形式参数表) /函数首部/
{
函数实现过程 /函数体/
}
函数最常见的用途:用来实现一个计算并得到一个明确的结果
1.函数首部:
函数首部由函数类型、函数名和形式参数表(以下简称形参表)组成,位于函数义的第一行。函数首部中,函数名是函数整体的称谓,需用一个合法的标识符表示。函数类型指函数结果返回的类型,一般与return语句中表达式的类型一致。形参表中给出函数计算所要用到的相关已知条件,以类似变量定义的形式给出,其格式为:
类型形参1,类型2 形参2,…,类型n形参n
形参表中各个形参之间用逗号分隔,每个形参前面的类型必须分别写明。函数的 参的数量可以是一个,也可以是多个,或者没有形参。
2.函数体
函数体体现函数的实现过程,由一对大括号内的若干条语完成特定的工作,并用return语句返回运算的结果。
3函数的调用
定义一个函数后,就可以在程序中调用这个函教。在C语言中,调用标准库函数时,只需要在程序的最前面用#ineclde命令包含相应的头文件
调用自定义函数时,程序中必须有与调用函数相对应的函数定义。
函数调用的一般形式
函数名(实参列表)
4参数传递
函数定义时,位于其首部的参数被称为形参,如r和h生调函数的参数被称为宝参,如radius和height。形参除了能接受实参的值外,使用方法与普通变量类似。形参和实参必须一-对应,两者数量相同,类型尽量一致。程序运行遇到函数调用时,实参的值依次传给形参,这就是参数传递。
函数的形式必须是变量,用于接受实参传递过来的值;而实参可以是常量、或表达式,其作用是把常量、变量或表达式的值传递给形参。如果实参是变量,
它所对应的形参是两个不同的变
也可以是不同名所对应的形类是两个不同的变量。实参是主调函数的,形参是自定义的数的。
按照C语言的规定,在参数传递过程中,将实参的值复制给形参。这种参数传的来影响实参。是单向的,只允许实参把值复制给形参,形参的值即使在函数中改变了,也不会反过啥实参和形参一对应,一致。
5.函数结果返回
函数结果返回的形式如下:
return表返回主调函数。函数首部由函数类型、函数名和形式参数表(以下简称形参表)组成,位于函数义的第一行。函数首部中,函数名是函数整体的称谓,需用一个合法的标识符表示。函数类型指函数结果返回的类型,一般与return语句中表达式的类型一致。形参表中给出函数计算所要用到的相关已知条件,以类似变量定义的形式给出,其格式为:
类型形参1,类型2 形参2,…,类型n形参n 形参表中各个形参之间用逗号分隔,每个形参前面的类型必须分别写明。函数的 参的数量可以是一个,也可以是多个,或者没有形参。
return语句只能返回一个值。
虽然可以将主调函数放在被调函数的后面,从而不需做声明。但考虑到函数的执行顺序,在编程时一般都把主函数写在最前面,使整个程序的结构和功能开门见山地呈现在读者面前,然后通过函数声明解决丽数先调用后定义的矛盾。函数声明-→函数调用-→函数定义。
注意:如果在调用函数前, 既不定义,也不声明,程序编译时会出错。
6函数程序 设计
使用函数求最大公约数:
调试结果
测试点:
局部变量和全局变量
1局部变量
在程序中使用的变量都定义在函数内部,它们的有效使用范围被局限于所在的函数内。因此主调函数只有通过参数传递,才能把实参数据传递给函数使;同样,形参的改变也不会影响到实参变量。这种变量的有效使用范围,最大程度保了各函数之间的独立性,避免函数之间相互干扰。
C语言中把定义在函数内部的变量称为局部变量,局部变量的有效作用范围局限于所在的函数内部。形参是局部变量。
使用局部变量可以避免各个函数之间的变量相互干扰。当函数使用了同名的形参时,甚至于主函数的实参变量也同名时,由于分属不同函数,它们有各自不同的变量实体和使用范围,不会相互千扰。C语言的这个特性在结构化程序设计中非常有用。
除了作用于函数的局部变量外,C语言还允许定义作用于复合语句中的局部变量,其有效使用范围被局限于复合语句内,一般用作小范围内的临时变量。
全局变量:
定义在函数外而不属于任何函数的变量称为全局变量。全局变量的作用范围是从定义开始到程序所在文件的结束,它对作用范围内所有的函数都起作用。
全局变量的定义格式与局部变量完全一致,只是定义位置不在函数内,它可以定义在程序的头部,也可以定义在两个函数的中间或程序尾部,只要在函数外部即可。
一般情况下把全局变量定义在程序的最前面,即第一个函数的前面。
由于全局变量和局部变量的作用范围不同,允许它们同名。当某函数的局部变量与全局变量同名时,在该函数中全局变量不起作用,而由局部变量起作用。对于其他不存在同名变量的函数,全局变量仍然有效。同样,当函数局部变量与复合语句的局部变量同名时,以复合语句为准。
全局变量可以帮助解决函数多结果返回的问题,但全局变量更多地用于多函数间的全局数据表示。
二者的相互比较:
使用全局变挺比使用局部变量自由度大,更方便。一旦定义,所有函数都可直接使用,连函数参数都可省略,甚至函数返回结果个数也不受限制,不需要使用return语句,可以直接通过全局变量回送结果。###但对于规模较大的程序,过多使用全局变量会带来副作用,导致各函数间相互干扰。如果整个程序是由多人合作开发的,各人都按自己的想法使用全局变量,相互的干扰可能更严重。因此在变量使用中,应尽量使用局部变量,从某个角度看使用似乎受到了限制。
从另一个角度看,它避免了不同函数间的相互干扰,提高了程序质量。
全局变量虽然可以用于多个函数之间的数据交流,但一般情况下,应尽量使用局部变量和函数参数。
综合作业
小学生口算自动生成系统
定义本题需要的函数,以函数
主函数
进行界面设计
函数1,进行提示:输入选择
函数2:对输入的值进行判断,如果函数值有错误,则进行提醒,通过if while语句的组合来进行判断
函数3:运用switch语句来警醒判断,只有当同学按照题目的数据输入才能进入函数,同时用来排除不合法的输入,只有所有的输入正确,才能正确判断。
函数4小学一年级的函数,同时用来生成随机数用来计算,同时调用函数8和函数9进行函数结果的判断
函数9用来随机生成一年级的题目
函数8用来判断输入的答案与正确进行对比,如果错误就会输出正确答案
函数7用来提示答题者是否退出,用if条件语句判断
调试
函数5用来随机生成二年级的题目
调试
函数11用来判断输入的答案与正确答案并输出正确率
函数10随机生成二年级的题目并计算正确答案