C语言程序设计第四版ppt-谭浩强课件.ppt
《C语言程序设计第四版ppt-谭浩强课件.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第四版ppt-谭浩强课件.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7 7章章 函数函数资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值引例引例 求阶乘求阶乘n!int i,n;float fac=1;printf(n=);scanf(%d,&n);for(i=1;i=n;i+)fac=fac*i;printf(%d!=%.0fn,n,fac);资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值引例引例求任意求任意3个正整数的阶乘的和个正整数的阶乘的和 a!+b!+c!fa=1;for(i=1;i=a;i+)
2、fa=fa*i;fb=1;for(i=1;i=b;i+)fb=fb*i;fc=1;for(i=1;i=c;i+)fc=fc*i;printf(%d!+%d!+%d!=%.0f,a,b,c,fa+fb+fc);资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值引例引例求任意求任意3个正整数的阶乘的和个正整数的阶乘的和 a!+b!+c!#include stdio.hint main()float factorial(int n);int a,b,c;float sum;printf(a=);scanf(%d,&a);pri
3、ntf(b=);scanf(%d,&b);printf(c=);scanf(%d,&c);sum=factorial(a)+factorial(b)+factorial(c);printf(%d!+%d!+%d!=%.0f,a,b,c,sum);return 0;float factorial(int n)int i;float fac;fac=1;for(i=1;i=n;i+)fac=fac*i;return fac;资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值引例引例 求任意求任意3个正整数的阶乘的和个正整数的
4、阶乘的和 a!+b!+c!使用函数可减少程序的重复段落使用函数可减少程序的重复段落使用函数可使程序功能相对独立,便使用函数可使程序功能相对独立,便于维护于维护模块化的程序设计模块化的程序设计资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值应用程序应用程序源程序文件源程序文件1函数函数1函数函数2函数函数3源程序文件源程序文件2函数函数1函数函数2C应用程序的构成应用程序的构成资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的概念函数的概念#
5、include int main()int max(int x,int y);int a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);printf(max=%d,c);return 0;int max(int x,int y)int z;if(xy)z=x;else z=y;return z;程序必备的程序必备的 main函数函数有返回值的函数有返回值的函数资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的概念函数的概念上述问题也可只用一个上述问题也可只用一个main函数实现函数实现int
6、main()int a,b,c;scanf(%d,%d,&a,&b);if(ab)c=a;else c=b;printf(max=%d,c);return 0;资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的概念函数的概念int main()void stars();stars();printf(Hello!n);stars();printf(Bye!n);stars();return 0;void stars()int i;for(i=1;i=8;i+)printf(*);printf(n);无返回值的函数无返
7、回值的函数资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的概念函数的概念int main()void stars(int n);int n=20;stars(10);printf(Hello!n);stars(5);printf(Bye!n);stars(n);return 0;void stars(int n)int i;for(i=1;i=n;i+)printf(*);printf(n);有参数,无返回值有参数,无返回值资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值
8、的这部分资金就是原有资金的时间价值函数的概念函数的概念int main()void stars(int,char);int n=20;stars(10,%);printf(Hello!n);stars(5,-);printf(Bye!n);stars(n,$);return 0;void stars(int n,char c)int i;for(i=1;iy)z=x;else z=y;return z;函数首部函数首部函数体函数体函数的返回值,类函数的返回值,类型与首部定义一致型与首部定义一致函数首部,不是语函数首部,不是语句,行尾无分号句,行尾无分号资金是运动的价值,资金的价值是随时间变化而
9、变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的定义函数的定义关于函数类型的说明关于函数类型的说明u无返回值的函数类型为无返回值的函数类型为void;u有返回值的函数,其类型根据返回值有返回值的函数,其类型根据返回值类型决定;省略类型时默认为类型决定;省略类型时默认为int(建议(建议不要省略)不要省略)资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的调用函数的调用调用函数的准备工作调用函数的准备工作包含或声明包含或声明u调用库函数应在调用库函数应在C文件开头部分使用文件开
10、头部分使用#includeu要调用要调用其他自定义函数其他自定义函数,应在,应在本函数本函数体体开始的声明部分加上开始的声明部分加上被调用函数的声被调用函数的声明明(与(与函数首部内容函数首部内容相同的一个语句),相同的一个语句),供编译时使用供编译时使用如果如果被调用函数被调用函数出现出现在在本函数本函数之前可省略此部分之前可省略此部分 详见详见7.4节节资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的调用函数的调用函数(实参列表)函数(实参列表)调用无返回值的函数可以把上述函数调用无返回值的函数可以把上述函数
11、直接作为语句使用,以完成其功能。直接作为语句使用,以完成其功能。例如:例如:stars(10);资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的调用函数的调用函数(实参列表)函数(实参列表)调用有返回值的函数,应注意返回值调用有返回值的函数,应注意返回值的处理,如赋值或输出等。的处理,如赋值或输出等。例如:例如:c=max(a,b);或或 printf(%d,max(a,b);资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的参数函数
12、的参数u形式参数(形参,形式参数(形参,Formal parameter):):定义函数时首部括号中定义的变量定义函数时首部括号中定义的变量u实际参数(实参,实际参数(实参,Actual parameter):):调用函数时,在函数名后括号中使用调用函数时,在函数名后括号中使用的表达式的表达式调用函数时,实参将值传递给形参调用函数时,实参将值传递给形参资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的参数函数的参数形式参数和实际参数形式参数和实际参数void main()int max(int x,int y);i
13、nt a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);printf(max=%d,c);return 0;int max(int x,int y)int z;if(xy)z=x;else z=y;return z;资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的参数函数的参数形式参数和实际参数形式参数和实际参数u形参在函数调用时分配内存单元,调用结束形参在函数调用时分配内存单元,调用结束后释放;后释放;u实参可以是常量、变量、表达式实参可以是常量、变量、表达式u实参与形参的数目、类型应一致
14、实参与形参的数目、类型应一致uC语言中,实参向形参传递其值语言中,实参向形参传递其值“值传值传递递”,不传递地址,形参值变化不影响实参,不传递地址,形参值变化不影响实参资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的返回值函数的返回值u通过函数体通过函数体return语句中的表达式值获语句中的表达式值获得,例如:得,例如:int max(int x,int y)return xy?x:y;u无返回值的函数可省略无返回值的函数可省略return语句语句u函数执行到函数执行到return语句结束语句结束资金是运动的价
15、值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值关于例题和习题关于例题和习题 通过本章例题、习题,不仅要掌握函数定义和通过本章例题、习题,不仅要掌握函数定义和调用的语法,也要掌握更多算法和编程技巧。调用的语法,也要掌握更多算法和编程技巧。正如学习语文、英语要大量阅读一样,学习计正如学习语文、英语要大量阅读一样,学习计算机语言也要阅读例题,掌握一些基本的编程思算机语言也要阅读例题,掌握一些基本的编程思路、技巧和表达,才可能对新的问题较快地找到路、技巧和表达,才可能对新的问题较快地找到解决方法;同时要多了解语法规则解决方法;同时要多了解
16、语法规则相当于认相当于认字。另外,还应对计算机的工作原理和方式多一字。另外,还应对计算机的工作原理和方式多一些了解。些了解。资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例:最大公约数函数和最小公倍数函数例:最大公约数函数和最小公倍数函数求最大公约数的算法:求最大公约数的算法:从从1开始,逐个找公约数,直至两数中较小开始,逐个找公约数,直至两数中较小的一个;的一个;辗转求余辗转求余(循环结构实验指导有流程图循环结构实验指导有流程图);.求最小公倍数的算法:求最小公倍数的算法:从两数中较大的一个开始,由小到大找公倍从两
17、数中较大的一个开始,由小到大找公倍数,直至找到;数,直至找到;两数的乘积两数的乘积/两数的最大公约数。两数的最大公约数。资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的嵌套调用函数的嵌套调用调用最小公倍数函数调用最小公倍数函数(两数乘积两数乘积/两数的最大两数的最大公约数公约数),当中需要调用最大公倍数函数,当中需要调用最大公倍数函数函数的嵌套调用:在一个被调用的函数中调函数的嵌套调用:在一个被调用的函数中调用另一个函数用另一个函数例:例:P183 例例7.5资金是运动的价值,资金的价值是随时间变化而变化的,是时
18、间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的递归调用函数的递归调用概念:在一个被调用的函数中直接概念:在一个被调用的函数中直接或间接地调用函数本身或间接地调用函数本身n!=1 ,n=0,1n(n-1)!,n1资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值函数的递归调用函数的递归调用递归的另一个典型实例递归的另一个典型实例 汉诺塔(汉诺塔(P.189例例7.8)算法讲解算法讲解http:/ 实参是数组元素,对应的形参是变量实参是数组元素,对应的形参是变量以以数组名数组名作为函数的参数作为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 第四 ppt 谭浩强 课件
限制150内