函数(1变量做函数参数).ppt_第1页
函数(1变量做函数参数).ppt_第2页
函数(1变量做函数参数).ppt_第3页
函数(1变量做函数参数).ppt_第4页
函数(1变量做函数参数).ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章 函 数,C语言程序设计,内 容 提 要,变量做函数参数 函数的嵌套调用 函数的递归调用,函数的分类(用户使用的角度),标准函数,即库函数 系统已经预先编写好的函数,用户可以直接使用。这类函数在前面已经介绍和使用过。注意:使用库函数时,必须加相应的头文件。 用户自定义函数 用户根据需要自己编写函数。本章主要介绍这类函数。,1、有参函数 (1)有函数值 (2)无函数值 2、无参函数 (1)有函数值 (2)无函数值,函数的分类(根据函数的形式),无参函数的定义形式 类型标识符 函数名( void ) 函数体 ,#include void PrintMessage (void) printf(“t*n“); printf(“t Programming is fun.n“); printf(“t*n“); int main(void) PrintMessage ( ); PrintMessage ( ); PrintMessage ( ); return 0; ,函数无参函数、无函数值,有参函数的定义,函数返回值类型 函数名(数据类型 参数1, 数据类型 参数2, ) 函数体 说明: 如果不需要返回值,则应该用void定义返回值类型 函数的返回值通过return语句返回,编写以下程序:其中m=k0 计算组合数:,/* 程序的功能:计算组合数 */ #include double Fact(int n); /函数原型声明 int main(void) int m, k; double result; scanf(“%d,%d“, ,函数有参函数、有函数值,函数首部,C程序的几点说明: 一个源程序文件由一个或多个函数组成。 C程序的执行从main函数开始,调用其它函数后流程回到main函数,在main函数中结束整个程序的运行。main函数是由系统定义的。 所有函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于另一个函数。函数间可以互相调用,但不能调用main函数。,一个函数只有被调用,才有机会被执行。 函数参数: 形参( 形式参数 ): 在定义函数时,函数名后面括号中的变量名 实参( 实际参数 ): 在主调函数中调用一个函数,函数名后面括号中的参数(或表达式),函数调用(call),例 函数的调用,/* 程序的功能:计算组合数 */ #include double Fact(int n); /函数原型声明 int main(void) int m, k; double result; scanf(“%d,%d“, ,函数调用总结,提供的参数个数、类型、顺序应与定义时相同,单向值传递,调用函数时,必须提供所有的参数,函数调用的形式,调用有函数值的函数(有参和无参),函数值可以参加程序中的任何运算,例如赋值,算术运算等。,放到一个数值表达式中 如 c = max(a,b);,作为另一个函数调用的参数 如 c = max(min( ), c); printf(“%dn“, max(a, b);,函数调用表达式 如 display(a, b); printstar( );,调用无函数值的函数(有参和无参),此时函数只能执行指定的操作。(具体例子见本ppt的第7页),#include int max ( int x, int y ) int z; if (x y) z = x; else z = y; return (z); int main(void) int a = 45, b = 78, c =99, d, e; d = max(a, b); printf(“max1 = %dn“, d); printf(“max2 = %dn“, max(a, b); e = c - max(a, b); printf(“e = %dn“, e); printf(“max3 = %dn“, max(max(a, b), c); return 0; ,有函数值的函数调用使用举例,max1 = 78 max2 = 78 e = 21 max3 = 99,该程序的输出是什么?,函数原型(prototype),调用一个函数之前,先要对其返回值类型、函数名和参数进行声明(declare) 有助于编译器进行类型检查,声明时不要省略参数以及返回值的类型,#include int Average(int x, int y) int result; result = (x + y) / 2; return result; int main(void) int a = 12; int b = 24; int ave ; ave = Average(a, b); printf(“Average of %d and %d is %d.n“, a, b, ave); return 0; ,例,函数定义,函数调用,#include int Average(int x, int y); /*声明Average()函数*/ int main(void) int a = 12; int b = 24; int ave; ave = Average(a, b); printf(“Average of %d and %d is %d.n“, a, b, ave); int Average(int x, int y) int result; result = (x + y) / 2; return result; ,例 函数的原型声明,main() a(); ,a 函数 b(); return; ,b函数 return; ,函数的嵌套调用,在调用一个函数的过程中,又调用其他的函数,称为函数的嵌套调用。,函数的嵌套调用举例,#include float b (float m); float add (float x, float y); int main(void) float a = 1.2, b = 3.4, c; c = add(a, b); printf (“c = %fn”, c); return 0; float b (float m) float n; n = m * 10; return (n); float add (float x, float y) float z; z = b(x) + y; return (z); ,函数的递归调用,在调用一个函数的过程中,又出现直接或间接地调用该函数本身,称为函数的递归调用。 int f(int x) int y, z; z = f(y); return (2*z); ,函数的递归调用举例,有3个人坐在一起,问第3个人多少岁?他说比第2个人大2岁。问第2个人多少岁?他说比第1个人大2岁。最后问第1个人,他说是10岁。请问第3个人多大? 分析: age(3)=age(2)+2; age(2)=age(1)+2; age(1)=10; 归纳: n=1 age(n)=10 n1 age(n)=age(n-1)+2,函数的递归调用举例,程序如下: #include int age(int n); int main(void) printf(“%d”, age(3); return 0; int age(int n) int c; if (n = 1) c = 10; else

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论