c语言函数章节ppt,C语言函数章节教案.ppt

C语言函数章节教案

* 8.3 函数的调用 8.3.1 函数调用的一般格式: 函数名(实参表); 举例(设已建立max函数,为求最大值): …… main( ) { int x,y,z; scanf(“%d,%d”,&x,&y); z=max(x,y); …… } * 8.3.2 函数调用中参数传递的两种方法 传值调用:函数调用中,采用赋值方式将实参的值传给形参。即单向调用。 传址调用:函数调用中,把实参的地址传给形参。在被调用函数中通过形参中的地址来访问调用函数中的实参。双向调用。 8.3.3 函数调用的三种方式 按照函数在程序中出现的位置来分; 作为表达式出现在任何允许表达式出现的地方,参与运算。 如:a=sqrt(b); 作为一条独立的语句完成特定的操作。 如:gets(string1); 作为函数的参数被其他函数调用。 如:printf(“%s\n”,strcpy(str1,”Red rose”)); * * 8.3.4 调用函数与被调函数的相对位置关系 如使用库函数,一般应在文件开头用: #include …… 函数调用遵循“先定义后调用”的原则。一般被调函数放在调用函数之前定义。 若被调函数在调用函数之后定义,就必须在调用函数中对被调函数加以如下说明: 类型名 被调函数名( ); main( ) { float sum( ); /*对被调函数的说明*/ float a,b,c; scanf("%f%f",&a,&b); c=sum(a,b); printf("sum=%f\n",c); } float sum(x,y) /*对函数sum进行定义*/ float x,y; { float z; z=x+y; return z; } 【例8.12】 被调函数 在调用函 数之后出 现: * * 8.4 函数的嵌套调用 C语言程序由函数构成。 函数与函数之间是平行的,独立的。 不允许在一个函数内部嵌套定义另一个函数;但允许在调用一个函数的过程中,又调用另一个函数。 main函数 结束 调用函数a 调用函数b 函数b 函数a 函数的嵌套调用 * * 8.5 递归函数 递归调用: 在调用一个函数的过程中又出现直接或间接的调用该函数本身,称为函数的递归调用。 注意: 递归结构构成了另外一种形如循环的结构。 * 递归函数设计举例:求n! 算法描述: n!=1 × 2 × 3 × …… × (n-1)×n 求积公式: f(n) = 1 n=0 n ×(n-1)! n>0 5!的运算过程: ? 5! 5×4! 4×3! 3×2! 2×1! 1 2×1 3×2 4×6 5×24 120 1×0! 1×1 * n!递归程序源程序1/2 求n!递归源程序如下: main( ) { int x; long facto( ); printf("Input a number:\n"); scanf("%d",&x); printf("The result is %ld",facto(x)); } * long facto(n) int n; { long int z; if (n==0) z=1; else z=n*facto(n-1); return z; } n!递归程序源程序2/2 * * 8.6 数组与函数 函数间传递数组数据的两种方法: 值传递:将数组中的每个元素都作为一个参数来传递。 地址传递:通过地址传送方式将数组的首地址(如数组名)作为参数进行传递 。 * 8.6.1 数组元素作函数实参 数组元素(同简单变量)作函数实参,单向值传递,即“传值调用”方式。 【例8.17】用程序求出a数组中所有素数的和及平均值,函数isprime用来判断自变量是否素数。 int isprime(int x) /*该函数判断是否素数*/ { int i; for (i=2;i<=x/2;i++) if (x%i==0) return (0); return (1); } main( ) { int i,a[10],sum=0,n=0; float aver; printf("Enter 10 numbers:\n"); for(i=0;i<10;i++) 源程序1/2 * scanf("%d",&a[i]); printf("\n"); for(i=0;i<10;i++) if(isprime(a[i])==1) /*若a[i]素数*/ { printf("%d ",a[i]); sum+=a[i];/*求素数和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值