谭浩强c语言程序设计第八章,C语言程序设计(谭浩强编)第八章 函数6学时new.ppt...

C语言程序设计(谭浩强编)第八章 函数6学时new

第8章函数 8.1 概述 函数:英文名为Function,直译为“功能”,“函数”的意思在C语言里,函数指的是实现一个特定功能的程序模块。它相当于其他语言中的子程序。 一个C语言程序可由一个主函数和若干个函数构成,其中主函数是不可缺省的。每个C程序由主函数调用其他函数,其他函数也可以相互调用。 在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。 8.3 函数参数和函数的值 8.3.1 形式参数和实际参数 在定义函数时函数名后面括弧中的变量名称为“形式参数”(简称“形参”),在主调函数中调用函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称“实参”)。 8.5 函数的嵌套调用 C语言的函数定义都是互相平行、独立的,也就是说在定义函数时,一个函数内不能包含另一个函数,这是和PASCAL不同的。 C语句不能嵌套定义函数,但可以嵌套调用函数,也就是说,在调用一个函数的过程中,又调用另一个函数。 下图表示的是两层嵌套(连main函数共3层函数),其执行过程见图。 8.6 函数的递归调用 在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。C语言的特点之一就在于允许函数的递归调用。例如: int f(int x) { int y,z; z=f(y); return(2*z); } 在调用函数f 的过程中,又要调用f 函数,这是直接调用本函数,见图。 在调用 f1 函数过程中要调用 f2 函数,而在调用f2函数过程中又要调用 f1 函数。 从图上可以看到,这两种递归调用都是无终止的自身调用。显然,程序中不应出现这种无终止的递归调用,而只应出现有限次数的、有终止的递归调用,这可以用if语句来控 制,只有在某一条件成立时才继续执行递归调用,否则就不再继续。 例8.7 有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2个人大2岁。问第2个人,说比 第1个人大 2岁。最后问第1个人,他说是10岁。请问第5个人多大。 显然,这是一个递归问题。每一个年龄都比其前1个人的年龄大2岁.即 age(5)=age(4)+2 age(4)=age(3)+2 age(3)=age(2)+2 age(2)=age(1)+2 age(1)=10 因此,除了第一个人,其余的人的年龄都需用递归法求出。 *递归函数: age(int n) { int c; if(n==1) c=10; else c=age(n-1)+2; return(c); } 例8.8用递归的方法求n! 递推法:从1开始,乘2,乘3,……一直乘到n。其基本 原理是从一个已知事实推出下一个事实。 递归法:当n=1或0时,n!=1;当n>1时,n!=n*(n-1)!。 ※ main ( ) {int large( int x,int y); int a[10],b[10],i,n=0,m=0,k=0; printf(“enter array a:\n”); for( i=0;i<10;i++) scanf(“%d”,&a[i]); printf(“\n”); printf(“enter array b:\n”); for(i=0;i<10;i++) scanf(“%d”,&b[i]); printf(“\n”); for(i=0;i<10,i++) { if(large(a[i],b[i])==1) n=n+1; else if(large(a[i],b[i])==0) m=m+1; else k=k+1; } printf(“a[i]>b[i]%d imes\n a[i]=b[i]%d imes\n a[i]k)printf(“array a is larger than array b\n”); if(n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值