预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共49页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Chap5函数数学中的函数问题的提出模块化程序设计概述d函数是C语言中模块化编程的最小单位 可以把每个函数看作一个模块(Module) 如把编程比做制造一台机器,函数就好比其零部件 可将这些“零部件”单独设计、调试、测试好,用时拿出来装配,再总体调试。 这些“零部件”可以是自己设计制造/别人设计制造/现成的标准产品函数调用程序实例Chap5函数从用户使用角度看 标准库函数:由语言的编译系统直接提供给用户使用。 stdio.h-scanf(),printf(),getchar(),putchar() math.h-sin()、sqrt() 自定义函数:程序员自行设计函数分类(2)函数说明函数说明函数说明函数返回值类型函数名(形参类型说明表) { 说明部分 语句部分 } 函数的返回值是通过return语句传递的。 形式:return(表达式); 或return表达式; 或return; 功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数 说明: 函数中可有多个return语句 若无return语句,遇}时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换 void型函数 return语句执行图示调用形式 函数名(实参表); 说明: 实参与形参个数相等,类型一致,按顺序一一对应关于实参和形参实参必须有确定的值 形参必须指定类型 形参与实参类型一致,个数相同 若形参与实参类型不一致,自动按形参类型转换———函数调用转换 形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放 函数语句: 例printstar(); printf(“Hello,World!\n”); 函数表达式: 例m=max(a,b)*2; 函数参数: 例printf(“%d”,max(a,b)); m=max(a,max(b,c));函数的调用过程 值传递方式 方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值 特点: 形参与实参占用不同的内存单元 单向传递程序解析-计算圆柱体积(例5-1)例5-1源程序例5-1源程序输出5之内的数字金字塔(例5-2)定义判断奇偶数的函数even(n)【例5-3】定义和调用函数funpi(e)求π的近似值(例5-4)例5-4源程序判断素数的函数(例5-5)例5-5源程序7方式:函数调用时,将数据的存储地址作为参数传递给形参 特点: 形参与实参占用同样的存储单元 “双向”传递 实参和形参必须是地址常量或变量//交换两个数,传地址 voidswap(int*p1,int*p2) {intp; p=*p1; *p1=*p2; *p2=p; } voidmain() {inta,b; scanf("%d,%d",&a,&b); printf("a=%d,b=%d\n",a,b); printf("swapped:\n"); swap(&a,&b); printf("a=%d,b=%d\n",a,b); }例利用函数调用方式编程,计算m,n的最大公约数。(辗转相除法)//求两个数阶乘之和 #include<stdio.h> longsum(inta,intb); longfactorial(intn); voidmain() {intn1,n2; longa; scanf("%d,%d",&n1,&n2); a=sum(n1,n2); printf("a=%1d",a); } longsum(inta,intb) { longc1,c2; c1=factorial(a); c2=factorial(b); return(c1+c2); }Chap5函数局部变量和全局变量例5-6在复合语句中定义局部变量。例5-7全局变量定义自动变量(auto):普通的局部变量 intx,y;autointx,y; charc1;autocharc1; 函数调用时,定义变量,分配存储单元。 函数调用结束,收回存储单元。 全局变量:从程序执行开始,到程序的结束,存储单元始终保持。 变量生命周期 变量从定义开始分配存储单元,到运行结束存储单元被回收的整个过程。存储类型: 动态存储:自动变量 静态存储:全局变量、静态局部变量 用户存储空间 static类型名变量表 作用范围:局部变量 生命周期:全局变量例5-9静态局部变量示例要点课堂练习1分析程序运行结果#include<stdio.h> intf1(int),f2(int); voidmain() {inti; for(i=2;i<5;i++) printf("f1(%d)=%d\t",i,f1(i)); printf("\n");