No.8-2《C语言程序设计》教案备注第八讲函数(一)1,掌握函数的定义和引用方法:目的2.了解变量的存储类型、作用域和生命期要求3小时学时划分组织形式讲授+自学+独立作业+上机量1.函数的定义及引用;点2.变量的存储类型、作用域和生命期难点【引题]前几次课,我们已经讨论了如何使用C语言进行结构化,即顺序结构、分支结构和循环结构的程序设计方法。通过学习,大家知道,要进行编程,首先必须采用自上而下逐步求精的方法进行算法设计,然后把算法用C语言语句描述出来。大家不难发现,这里所谓的结构化实质上是从解决问题的步骤,也就是从算法的结构来说的。通俗一点讲,就是不论我们为解决如何复杂的问题而使用C语言进行编程,总可以通过或者顺序,或者分支,或者循环的结构样式,或者是不同结构样式的嵌套,来控制程序的执行路线,最终获得我们期望的结果。可以说,前面我们遇到的程序设计是最简单的,它们都是有一个函数构成。现实生活中,我们遇到的问题要复杂得多。比如说,现在我们要计算s=1!+2!+3!+...+n!的值,通过前面我们介绍的方法,实现起来非常困难,我们是否可以这样想,如果我们先编制一个求n!的子程序,在遇到求与n!有关的问题时,我们就来调用这个子程序,便可以使问题大大简化.正是鉴于此思路,人们在进行复杂的程序设计时,便提出了模块化的程序设计思想,并成为人们普遍欢迎和广泛使用的方法.模块化的程序设计方法将整个程序分解为相互独立、功能单一,能分别设计、编码和调试的若干模块,能是设计人员单独负责其中一个或多个模块的设计和开发,而不需要了解其他模块的内部结构和编码细节。模块化设计方法的优点:1.简化整个程序的复杂性
《C 语言程序设计》教案 No.8-2 第八讲 函 数(一) 备 注 目 的 要 求 1.掌握函数的定义和引用方法; 2.了解变量的存储类型、作用域和生命期; 学时划分 3 小时 组织形式 讲授+自学+独立作业+上机 重 点 难 点 1. 函数的定义及引用; 2. 变量的存储类型、作用域和生命期; [引题]前几次课,我们已经讨论了如何使用 C 语言进行结构化,即顺 序结构、分支结构和循环结构的程序设计方法。通过学习,大家知道, 要进行编程,首先必须采用自上而下逐步求精的方法进行算法设计, 然后把算法用 C 语言语句描述出来。大家不难发现,这里所谓的结构 化实质上是从解决问题的步骤,也就是从算法的结构来说的。通俗一 点讲,就是不论我们为解决如何复杂的问题而使用 C 语言进行编程, 总可以通过或者顺序,或者分支,或者循环的结构样式,或者是不同 结构样式的嵌套,来控制程序的执行路线,最终获得我们期望的结果。 可以说,前面我们遇到的程序设计是最简单的,它们都是有一个函数 构成。现实生活中,我们遇到的问题要复杂得多。比如说,现在我们 要计算 s=1!+2!+3!+.+n!的值,通过前面我们介绍的方法,实现起 来非常困难.我们是否可以这样想,如果我们先编制一个求 n!的子程 序,在遇到求与 n!有关的问题时,我们就来调用这个子程序,便可以 使问题大大简化.正是鉴于此思路,人们在进行复杂的程序设计时,便 提出了模块化的程序设计思想,并成为人们普遍欢迎和广泛使用的方 法. 模块化的程序设计方法 将整个程序分解为相互独立、功能单一,能分别设计、编码和 调试的若干模块,能是设计人员单独负责其中一个或多个模块的设计 和开发,而不需要了解其他模块的内部结构和编码细节。 模块化设计方法的优点: 1.简化整个程序的复杂性
第八讲函数No.-32.有利于多人并行开发;3.减少了编程过程中出错的机会;4.实现程序复用,提高开发效率;sSUBISUB2SUBnSUBSUB1SUBSUBKSUBSUB2C语言的程序结构mainFunc1Func2funcnFuncllFunc12FuncliFuncnlfuncnkC语言程序是一种模块化程序结构,其中的每一个函数相当于一个功能单一、相互独立的模块。C语言函数标准库函数用户自定义函数6.2函数的定义和引用函数说明形参功能单一、相对独立的命名程序段,是C语言程序的基本组成操作结果调用一、函数的数据类型(一) 含义其返回值的数据类型(二) 种类数值型,字符型,指针型和void型
第八讲 函 数 No.-3 2.有利于多人并行开发; 3.减少了编程过程中出错的机会; 4.实现程序复用,提高开发效率; C 语言的程序结构 C 语言程序是一种模块化程序结构,其中的每一个函数相当于一 个功能单一、相互独立的模块。 C语言函数 标准库函数 用户自定义函数 6.2 函数的定义和引用 函数 功能单一、相对独立的命名程序段,是 C 语言程序的基本组成 一、函数的数据类型 (一)含义 其返回值的数据类型 (二)种类 数值型,字符型,指针型和 void 型 说明 形参 操作结果 调用 Func11 Func12 . Func1i Funcn1 . funcnk Func1 Func2 . funcn main SUBSUB1 SUBSUB2 . SUBSUBk SUB1 SUB2 . SUBn S
No.8-4《C语言程序设计》教案二、函数的定义函数定义举例1:(一)含义int fun(x,y)编写完成函数所具备的功能的程序代码int x,y,(二)一般形式1int z,[数据类型标识符]】函数名(【形式参数表]if(x>y)[形式参数说明;]Z=X,(else内部数据说明语句;z=y,return(z);可执行语句:11(三)注意事项(1)数据类型是函数返回值的类型,缺省时为整型或无返回值;说明:(2)函数名命名规则同用户定义标识符;1.无返回(3)形式参数可以有多个,之间用“,“分开;值时可以省略该语(4)形式参数的数据类型在形参说明部分说明,它可以是变量、指句或使用针或数组名,但不能是表达式或常量;取值有调用函数提供;return;2.C语言程(5)函数名后的()不能省略,即使没有形式参数;序实质就是定义一(6)如果函数有返回值,函数体中必须有return语句;系列相互格式:return(表达式)独立的函数,函数之(7)函数定义时不能使用嵌套;函数定义举例2:间只存在fact(n)引用和被三、函数的引用引用关系int n,(一)一般形式13.引用时函数名(【实参表】)inttemp;实参与定义的实参(二)方法temp=n,个数,类型while(--n>0)1.以函数引用语句形式和顺序必temp*=n;须一致funcname(xl,x2);4.凡是能return(temp);引用变量printf(%d %f",I,f);7或表达式2.在表达式中出现的地方均能引用函y=min(x1,x2,x3)/max(xl,x2,x3);数;3.以函数实参形式出现y=sin (cos (x));
《C 语言程序设计》教案 No.8-4 二、函数的定义 (一)含义 编写完成函数所具备的功能的程序代码 (二)一般形式 [数据类型标识符] 函数名([形式参数表]) [形式参数说明;] { 内部数据说明语句; 可执行语句; } (三)注意事项 (1)数据类型是函数返回值的类型,缺省时为整型或无返回值; (2)函数名命名规则同用户定义标识符; (3)形式参数可以有多个,之间用“,“分开; (4)形式参数的数据类型在形参说明部分说明,它可以是变量、指 针或数组名,但不能是表达式或常量;取值有调用函数提供; (5)函数名后的()不能省略,即使没有形式参数; (6)如果函数有返回值,函数体中必须有 return 语句; 格式: return(表达式) (7)函数定义时不能使用嵌套; 三、函数的引用 (一)一般形式 函数名([实参表]) (二)方法 1.以函数引用语句形式 funcname(x1,x2); printf(“%d %f”,I,f); 2.在表达式中出现 y=min(x1,x2,x3)/max(x1,x2,x3); 3.以函数实参形式出现 y=sin(cos(x)); 说明: 1. 无 返 回 值时可以 省略该语 句或使用 return; 2.C 语言程 序实质就 是定义一 系列相互 独立的函 数,函数之 间只存在 引用和被 引用关系 3. 引 用 时 实参与定 义的实参 个数,类型 和顺序必 须一致 4.凡是能 引用变量 或表达式 的地方均 能引用函 数; { int temp; temp=n; while(-n>0) temp*=n; return(temp); } 函数定义举例 2: fact(n) int n; } return(z); z=y; else int fun(x,y) int x,y; { int z; if(x>y) z=x; 函数定义举例 1:
第八讲函数No.-5(三)函数说明1.同变量一样,函数也应该先定义或说明后引用2.说明形式[数据类型标识符]函数名();如:float sqrtO,averageO:3.说明注意事项(1)说明放在源文件开头时,对整个源文件有效:(2)说明放在函数定义内部,只对引用函数有效;mainO定义在前,省略说明:Ifloat manO;min(a,b,c);float a,b,c,float x,y,z,m;scanf(c%f%f%f"&x,&y,&z);3float result,m=max(x,y,z);result=a,printf(cn%f",m);if(result>b)result=b;max (a, b, c);if(result>c)float a,b,c;result-c1return(result),float result;3result=a;main()if(result<b)result=b;floatx,y,z,mif(result<c)scanf(%f%f%f,&x&y&z);result=c;m=min(x,y,z);return(result);printf("in%f",m);?(3)可以省略说明的情况:调用与被调用函数在同一源文件中,被调用函数的定义在前:口被调用函数说明在源文件开头:说明在源文件中间时,之前引用需要说明,其后引用不需要;口函数的返回值是证书或字符时:(四)函数引用应注意的问题1.实参与形参的个数、类型和顺序上一致;2.实参可以是常量、变量、数组名、数组元素或表达式;3.弄清被引用函数的功能、参数和返回值;(五)函数引用举例编程计算从n个数中取m的组合
第八讲 函 数 No.-5 (三)函数说明 1.同变量一样,函数也应该先定义或说明后引用; 2.说明形式 [数据类型标识符] 函数名(); 如:float sqrt(),average(); 3.说明注意事项 (1)说明放在源文件开头时,对整个源文件有效; (2)说明放在函数定义内部,只对引用函数有效; main() { float man(); float x,y,z,m; scanf(“%f %f %f”,&x,&y,&z); m=max(x,y,z); printf(“\n%f”,m); } max(a,b,c); float a,b,c; { float result; result=a; if(result<b) result=b; if(result<c) result=c; return(result); } (3)可以省略说明的情况: 调用与被调用函数在同一源文件中,被调用函数的定义在前; 被调用函数说明在源文件开头; 说明在源文件中间时,之前引用需要说明,其后引用不需要; 函数的返回值是证书或字符时; (四)函数引用应注意的问题 1.实参与形参的个数、类型和顺序上一致; 2.实参可以是常量、变量、数组名、数组元素或表达式; 3.弄清被引用函数的功能、参数和返回值; (五)函数引用举例 编程计算从 n 个数中取 m 的组合 定义在前,省略说明: min(a,b,c); float a,b,c; { float result; result=a; if(result>b) result=b; if(result>c) result=c; return(result); } main() { float x,y,z,m; scanf(“%f %f %f”,&x,&y,&z); m=min(x,y,z); printf(“\n%f”,m); }
No.8-6《C语言程序设计》教案/*definefunctionfacto(x)calledfunction*longfactoo)1long temp;for (temp=1;x>0;x--)temp*=x;reurn(temp);/*main functioncalling faction*/mainO1说明:int m,n,两个函数long cmn,temp;体中的变量temp是printf("Enter m and n:")完全不同scanf("%d %d",&m,&n);的两个量/*第一次调函数facto()*/cmn=facto(m);temp=facto(n),/*第二次调函数facto()*/cmn=cmn/(temp*facto(m-n));/*函数出现在表达式中*/printf("ln The Combination: %d",cmn)四、C程序的执行过程1.程序启动2.函数调用(1)传递实参;(2)开始执行被调用函数;(3)保存现场;(4)执行被调用函数的函数体;fo(5)执行结束,恢复现场,返回调用;func104.主函数执行结束,返回操作系统main(fO.func10func20SOSfunc20
《C 语言程序设计》教案 No.8-6 /*define function facto(x)—called function*/ long facto() { long temp; for (temp=1;x>0;x-) temp*=x; reurn(temp); } /*main function—calling faction*/ main() { int m,n; long cmn,temp; printf(“Enter m and n:”); scanf(“%d %d”,&m,&n); cmn=facto(m); /*第一次调函数 facto()*/ temp=facto(n); /*第二次调函数 facto()*/ cmn=cmn/(temp*facto(m-n)); /*函数出现在表达式中*/ printf(“\n The Combination: %d”,cmn); } 四、C程序的执行过程 1.程序启动 2.函数调用 (1)传递实参; (2)开始执行被调用函数; (3)保存现场; (4)执行被调用函数的函数体; (5)执行结束,恢复现场,返回调用; 4.主函数执行结束,返回操作系统 说明: 两个函数 体中的变 量 temp 是 完全不同 的两个量 os . func1() . func2() . main() func1() func2() f() . f()