《函数C语言》PPT课件.ppt

上传人:豆**** 文档编号:25170233 上传时间:2022-07-10 格式:PPT 页数:20 大小:140.50KB
返回 下载 相关 举报
《函数C语言》PPT课件.ppt_第1页
第1页 / 共20页
《函数C语言》PPT课件.ppt_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《《函数C语言》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《函数C语言》PPT课件.ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实参与形参的对应关系有四种情况:实参与形参的对应关系有四种情况:形参和实参都用数组形参和实参都用数组实参用数组名,形参用指针实参用数组名,形参用指针实参形参都用指针实参形参都用指针实参用指针,形参用数组名实参用指针,形参用数组名 例 编写一个判断字符串是否为“回文”的函数,如果是回文数则函数的返回值为1,不是回文数则返回0。所谓“回文”数是指顺读与倒读都相同的字符串,例如“ABCDCBA”。 abcdcba0a0 a1 a2 a3a4a5a6 a7main()main() char a20;char a20;int f;int f;gets(a);gets(a); f=func(a); f=f

2、unc(a); if(f= =1) if(f= =1) printf(“ printf(“它是回文数它是回文数n”); n”); else else printf(“ printf(“它不是回文数它不是回文数n”); n”); 引入引入求求1+2+3+n的值的值#include int sum(int n) ;main( ) int n; int s=0; scanf(“%d”,&n); /* 例如输入例如输入50,则,则n为为50*/ for(i=1;i=n ; i+) s=s+ i ; printf(“he is %dn”, s); sum(n);s=#include int sum(in

3、t n) ;main( ) int n; int result; scanf(“%d”,&n); /* 例如输入例如输入50,则,则n为为50*/ result=sum(n); printf(“he is %dn”,result); int sum(int n) int i; int s=0; for(i=1; i=n; i+) s=s+ i ; return(s); 改进改进求求1+2!+3!+n!的值的值jc(i) int jc(int n) int i; int t=1; for(i=1; i=n; i+) t*=i; return(t ); 答案答案求求1+2!+3!+n!的值的值#i

4、nclude double sum(int n) ;double jc(int n) ;main( ) int n; double result; scanf(“%d”,&n); result=sum(n); printf(“1+2!+3!+d! %fn”,n,result); double jc(int n) int i; double t=1; for(i=1; i=n; i+) t*=i; return(t); double sum(int n) int i; double s=0; for(i=1; i=n; i+) s=s+jc( i ); return(s); 8.8 函数的嵌套调

5、用函数的嵌套调用n函数的嵌套调用函数的嵌套调用 在调用一个函数的过程中,又调用另一个函数。在调用一个函数的过程中,又调用另一个函数。 1. C 1. C语言的函数定义是平行的、独立的,一个函数内不能再定义语言的函数定义是平行的、独立的,一个函数内不能再定义另外一个函数。另外一个函数。 2. C 2. C语言语言不能嵌套定义函数,但可以嵌套调用函数不能嵌套定义函数,但可以嵌套调用函数。main() a(); a( ) b( );b( )作业作业n整理笔记整理笔记n认真阅读认真阅读148149页页 152167页页n自主编程自主编程 170页页8.5 用调用函数的方法求:链接两个字符串(参考在后)

6、用调用函数的方法求:链接两个字符串(参考在后) 用两种方法完成用两种方法完成1!+2!+3!+n! 用调用函数方法,实现两个字符串的连接。用调用函数方法,实现两个字符串的连接。 main()main() char a50,b20;char a50,b20;gets(a); gets(a); gets(b); gets(b); func(a,b);func(a,b);puts(a);puts(a); main()main() char a50,b20; char a50,b20; char char * *p,p,* *q;q;gets(a);gets(a); gets(b); gets(b);

7、 p=a;q=b; p=a;q=b; func(p,q);func(p,q);puts(a);puts(a); 000eraooh00000000uoyab8.9 函数的递归调用函数的递归调用f函数调用f函数调用f1函数f1函数调用f2函数f2函数n递归调用递归调用 在调用一个函数的过程中又出现直接或间接地调用该函数在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。本身,称为函数的递归调用。n直接调用本函数直接调用本函数n间接调用本函数间接调用本函数 例例求求n! main() int n; double result; double fun(int n); scan

8、f(“%d”,&n); result=fun(n); printf(“%d!=%f”,n, result); double fun(int n) int i; double t=1; for(i=1; i=2n=2时,阶层值为时,阶层值为fun(n)=nfun(n)=n* *fun(n-1)fun(n-1)现在现在用递归法求用递归法求n!n!,方法是:方法是: 5!=4! 5!=4!* *5 4!=3!5 4!=3!* *4 3!=2!4 3!=2!* *3 2!=1!3 2!=1!* *2 1!=12 1!=1通式为:通式为: n!=(n-1)!n!=(n-1)!* *n n 数学模型(公式

9、):数学模型(公式):fun(0)=1,fun(1)=1;fun(0)=1,fun(1)=1;fun(n)=nfun(n)=n* *fun(n-1); /fun(n-1); /* * n=2 n=2 * */ /求出求出n n!的值。的值。 (用递归法)用递归法) double fun(int n) if(n= =1| n= =0) return (1); else return (n*fun(n-1)); main() int n; double result; double fun(int n); scanf(“%d”,&n); result=fun(n); printf(“%d!=%f”

10、,n, result); 数学模型(公式):数学模型(公式):fun(0)=1,fun(1)=1; /fun(0)=1,fun(1)=1; /* *n=1 n=1 或或 n=0n=0* */ /fun(n)=nfun(n)=n* *fun(n-1); /fun(n-1); /* * n=2 n=2 * */ / double fun(int n) double f; if(n= =1| n= =0) f=1; else f=n*fun(n-1); return(f );求出求出n n!的值。的值。 (用递归法)用递归法) 第一次调用第一次调用fun函数函数 执行执行 4*fun(3), 遇到遇

11、到fun(3) ,离开离开fun( )函数,再次调用函数,再次调用fun( ) 函数(第函数(第2次)次)本次未得到本次未得到4!的结果,不能往主函数中返值;的结果,不能往主函数中返值; double fun(int n) double f; if(n= =1| n= =0) f=1; else f=n*fun(n-1); return(f );第二次调用第二次调用fun( )函数函数执行执行 3*fun(2), 遇到遇到fun(2) ,离开离开fun( )函数,再次调用函数,再次调用fun( ) 函数(第函数(第3次)次)本次未得到本次未得到3!的结果,不能往上次函数中返值;的结果,不能往上

12、次函数中返值; double fun(int n) double f; if(n= =1| n= =0) f=1; else f=n*fun(n-1); return(f );第三次调用第三次调用fun( )函数函数执行执行 2*fun(1), 遇到遇到fun(1) ,离开离开fun( )函数,再次调用函数,再次调用fun( ) 函数(第函数(第4次)次)本次未得到本次未得到2!的结果,不能往上次函数中返值;的结果,不能往上次函数中返值; double fun(int n) double f; if(n= =1| n= =0) f=1; else f=n*fun(n-1); return(f

13、);第四次调用第四次调用fun( )函数函数执行执行 f=1 , 得到得到1!,将值返回到上次函数中;将值返回到上次函数中; double fun(int n) double f; if(n= =1| n= =0) f=1; else f=n*fun(n-1); return(f );例例间接递归调用求斐波那契额数列第间接递归调用求斐波那契额数列第n项的值项的值 数学模型(公式):数学模型(公式):fun(1)=1,fun(2)=1; fun(1)=1,fun(2)=1; /* n=1或n=2 */fun(n)=fun(n-1)+fun(n-2); fun(n)=fun(n-1)+fun(n-

14、2); / /* * n=2 n=2 * */ / int fun(int n) int f; if(n= =1| n= =2) f=1; else f=fun(n-1)+fun(n-2); return(f ); int fun(int n) if(n= =1| n= =2) return (1); else return ( fun(n-1)+fun(n-2) );例例间接递归调用求斐波那契额数列第间接递归调用求斐波那契额数列第n项的值项的值1. double fun(int n) if(n= =1| n= =2) return (1); else return ( fun(n-1)+fun(n-2) ); main() int n; int result; int fun(int n); scanf(“%d”,&n); result=fun(n); printf(“斐波那契额数列第斐波那契额数列第%d项的值为项的值为%dn”,n, result); 2. int fun(int n) int f; if(n= =1| n= =2) f=1; else f=fun(n-1)+fun(n-2); return(f );

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁