资源描述:
《《函数c语言》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章函数内蒙古科技大学实训中心实参与形参的对应关系有四种情况:⑴形参和实参都用数组⑵实参用数组名,形参用指针⑶实参形参都用指针⑷实参用指针,形参用数组名例编写一个判断字符串是否为“回文”的函数,如果是回文数则函数的返回值为1,不是回文数则返回0。所谓“回文”数是指顺读与倒读都相同的字符串,例如“ABCDCBA”。abcdcba a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]main(){chara[20];intf;gets(a);f=func(a);if(f==1)printf(“它是回文数”);else
2、printf(“它不是回文数”);}引入——求1+2+3+……+n的值#includeintsum(intn);main(){intn;ints=0;scanf(“%d”,&n);/*例如输入50,则n为50*/for(i=1;i<=n;i++)s=s+i;printf(“heis%d”,s);}sum(n);s=#includeintsum(intn);main(){intn;intresult;scanf(“%d”,&n);/*例如输入50,则n为50*/result=sum(n);p
3、rintf(“heis%d”,result);}intsum(intn){inti;ints=0;for(i=1;i<=n;i++)s=s+i;return(s);}改进——求1+2!+3!+……+n!的值jc(i)intjc(intn){inti;intt=1;for(i=1;i<=n;i++)t*=i;return(t);}答案——求1+2!+3!+……+n!的值#includedoublesum(intn);doublejc(intn);main(){intn;doubleresul
4、t;scanf(“%d”,&n);result=sum(n);printf(“1+2!+3!+……+%d!=%f”,n,result);}doublejc(intn){inti;doublet=1;for(i=1;i<=n;i++)t*=i;return(t);}doublesum(intn){inti;doubles=0;for(i=1;i<=n;i++)s=s+jc(i);return(s);}8.8函数的嵌套调用函数的嵌套调用——在调用一个函数的过程中,又调用另一个函数。1.C语言的函数定义是平行的、独立
5、的,一个函数内不能再定义另外一个函数。2.C语言不能嵌套定义函数,但可以嵌套调用函数。main(){a();}a(){b();}b(){}作业整理笔记认真阅读148~149页152~167页自主编程170页8.5用调用函数的方法求:链接两个字符串(参考在后)用两种方法完成1!+2!+3!+……+n!用调用函数方法,实现两个字符串的连接。main(){chara[50],b[20];gets(a);gets(b);func(a,b);puts(a);}main(){chara[50],b[20];char*p,*q;gets(a);g
6、ets(b);p=a;q=b;func(p,q);puts(a);} eraooh uoyab预习在后8.9函数的递归调用f函数调用f函数调用f1函数f1函数调用f2函数f2函数递归调用在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。直接调用本函数间接调用本函数例——求n!main(){intn;doubleresult;doublefun(intn);scanf(“%d”,&n);result=fun(n);printf(“%d!=%f”,n,result);}d
7、oublefun(intn){inti;doublet=1;for(i=1;i<=n;i++)t*=i;return(t);}例——间接递归调用求n!如果我们定义fun()这个函数为求阶乘函数,则fun(n)=n*fun(n-1)当n==1或n==0时,阶层值为1当n>=2时,阶层值为fun(n)=n*fun(n-1)现在用递归法求n!,方法是:5!=4!*54!=3!*43!=2!*32!=1!*21!=1通式为:n!=(n-1)!*n数学模型(公式):fun(0)=1,fun(1)=1;fun(n)=n*fun(n-1
8、);/*n>=2*/求出n!的值。(用递归法)doublefun(intn){if(n==1
9、
10、n==0)return(1);elsereturn(n*fun(n-1));}main(){intn;doubleresult;doubl