C语言 学习课件 第5讲

上传人:zw****58 文档编号:51970592 上传时间:2018-08-17 格式:PPT 页数:33 大小:233.50KB
返回 下载 相关 举报
C语言 学习课件 第5讲_第1页
第1页 / 共33页
C语言 学习课件 第5讲_第2页
第2页 / 共33页
C语言 学习课件 第5讲_第3页
第3页 / 共33页
C语言 学习课件 第5讲_第4页
第4页 / 共33页
C语言 学习课件 第5讲_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《C语言 学习课件 第5讲》由会员分享,可在线阅读,更多相关《C语言 学习课件 第5讲(33页珍藏版)》请在金锄头文库上搜索。

1、Chap 5 函数 5.1 计算圆柱体积5.2 使用函数编写程序5.3 变量与函数本章要点n怎样定义函数?如何调用函数?如何声明 函数?n什么是函数的参数?在函数调用时,参数 是如何传递的?n在使用函数的过程中,要注意哪些问题? 怎样确定函数的参数?n如何使用局部变量和全局变量?n什么是静态变量?5.1 计算圆柱体积5.1.1 程序解析5.1.2 函数的定义5.1.3 函数的调用5.1.1 程序解析计算圆柱体积 例5-1 输入圆柱体的高和半径,求圆柱体积 ,volume=*r2*h。要求定义和调用函数cylinder (r, h )计算圆 柱体的体积。 例5-1源程序/* 计算圆柱体积 */

2、#include int main( void ) double height, radius, volume;double cylinder (double r, double h); /* 函数声明*/printf (“Enter radius and height: “); scanf (“%lf%lf“, /* 调用函数,返回值赋给volume */ volume = cylinder (radius, height ); printf (“Volume = %.3fn“, volume);return 0; 例5-1源程序/* 定义求圆柱体积的函数 */ double cylinde

3、r (double r, double h) double result;result =3.1415926 * r * r * h; /* 计算体积 */return result; /* 返回结果 */ Enter radius and height: 3.0 10Volume = 282.7435.1.2 函数的定义 n函数是指完成一个特定工作的独立程序模块。库函数:由C语言系统提供定义 如scanf()、printf()等函数自定义函数:需要用户自己定义 如计算圆柱体体积函数cylinder()nmain()也是一个函数,C程序由一个main()或多个 函数构成。n程序中一旦调用了某个

4、函数,该函数就会完成一些 特定的工作,然后返回到调用它的地方。函数经过运算,得到一个明确的运算结果,并需要回 送该结果。例如,函数cylinder()返回圆柱的体积。函数完成一系列操作步骤,不需要回送任何运算结果 。1返回运算结 果的函数定义函数类型 函数名(形参表)/* 函数首部 */ /* 函数体 */函数实现过程return 表达式;把函数运算的结果回送给主函数只能返回一个值函数返回值的类型没有分号double cylinder (double r, double h) double result;result = 3.1415926 * r * r * h; return result

5、; 形参类型1 参数1 ,类型2 参数2 ,类型n 参数n参数之间用逗号分隔,每个参数前面的类型都必须分别写明函数类型 函数名(形参表) 函数实现过程return 表达式; 不能写成 double r, hdouble cylinder (double r, double h) double result;result =3.1415926 * r * r * h; return result; double cylinder (double r, double h) /* 函数首部 */ /* 函数体,写在一对大括号 内 */double result;result =3.1415926 *

6、 r * r * h; /* 计算圆柱体积 */return result; /* 返回运算结果*/ 分析函数的定义函数类型函数名形参表与函数类型一致2不返回运算结 果的函数定义void 函数名(参数表) /* 函数首部 */ /* 函数体 */函数实现过程return; /* 可以省略return */ 这类函数通常用于屏幕输出等表示不返回结果不能省略 否则 函数类型被默认定义为int例5-2 输出5之内的数字金字塔。/* 输出数字金字塔 */ #include int main (void) void pyramid (int n);/* 函数声明 */ pyramid(5);/* 调用函

7、数,输出数字金字塔 */ return 0; void pyramid (int n) /* 函数定义 */ int i, j; for (i = 1; i int main( void ) double height, radius, volume; double cylinder (double r, double h);printf (“Enter radius and height: “); scanf (“%lf%lf“, volume = cylinder (radius, height ); printf (“Volume = %.3fn“, volume); return 0;

8、 double cylinder (double r, double h) double result; result =3.1415926 * r * r * h; return result; 调用函数实参形参执行函数中的语句返回调用它的地方2参数传递n函数定义时的参数被称为形式参数(简称形参) double cylinder (double r, double h);n函数调用时的参数被称为实际参数(简称实参) volume = cylinder (radius, height);n实参形参在参数传递过程中,实参把值复制给形参。形参和实参一一对应:数量一致,类型一致,顺序一 致形参:变量

9、,用于接受实参传递过来的值实参:常量、变量或表达式单向传递3函数结果返回n函数返回的两种情况完成确定的运算,有一个运算结果返回给主 调函数。完成指定工作,没有确定的运算结果需返回 给主调函数(函数类型void)。n函数结果返回的形式:return 表达式;return (表达式);【例5-3】定义判断奇偶数的函数even (n)定义一个判断奇偶数的函数even (n),当n为偶数时返回1,否 则返回0。/* 判断奇偶数的函数 */ int even (int n)/* 函数首部 */ if(n%2 = 0) /* 判别奇偶数 */ return 1;/* 偶数返回1 */ else retur

10、n 0;/* 奇数返回0 */ 如何调用该函数?4函数原型声明函数类型 函数名(参数表); double cylinder (double r, double h); void pyramid (int n);n函数必须先定义后调用,将主调函数放在被调函 数的后面,就像变量先定义后使用一样。n如果自定义函数在主调函数的后面,就需要在函 数调用前,加上函数原型声明。n函数声明:说明函数的类型和参数的情况,以保 证程序编译时能判断对该函数的调用是否正确。只写函数定义中的第1行(函数首部),并以分号结束。5.2 使用函数编写程序例5-4 输入精度e,使用格里高利公式求的 近似值,精确到最后一项的绝对

11、值小于e。要 求定义和调用函数 funpi(e) 求的近似值。例5-4 源程序/* 用格里高利公式计算的近似值, 精度为e */ #include #include int main (void) double e, pi;double funpi (double e); printf (“Enter e:“);scanf (“%lf“, pi = funpi (e);printf (“pi = %fn“, pi);return 0; double funpi (double e) int denominator, flag; double item, sum;flag = 1; denomi

12、nator = 1;item = 1.0; sum = 0; while (fabs (item) = e) item = flag * 1.0 / denominator;sum = sum + item;flag = -flag; denominator = denominator + 2; return sum * 4; Enter e: 0.0001pi = 3.1418例5-5 判断素数的函数例5-5 求100以内的全部素数,每行输出10个。素 数就是只能被1和自身整除的正整数,1不是素数, 2是素数。 要求定义和调用函数prime (m)判断m是否为素数, 当m为素数时返回1,否则

13、返回0。n算法描述:对2100之间的每个数进行判断,若 是素数,则输出该数。 for(m = 2; m #include int main(void) int count, m; int prime (int m);count = 0;for(m = 2; m int main (void) int a;a = 1; /* 复合语句开始 */int b = 2;b = a + b; a = a + b; /* 复合语句结束 */printf (“%d “ , a );return 0; b:小范围内的临时变量 4例5-7 全局变量定义#include “stdio.h“ int x; /* 定

14、义全局变量x */ int f( ) int x = 4; /* x为局部变量 */return x; int main(void) int a = 1; x = a; /* 对全局变量 x 赋值 */a = f( ); /* a的值为4 */int b = 2; b = a + b; /* b的值为4 */x = x + b; /* 全局变量运算 */printf(“%d %d“ , a, x);return 0; 4, 7若局部变量与全局变量 同名,局部变量优先变量作用范围示例int x=1; void main( ) int a=2;int b=3;f( ); int t=4 ; voi

15、d f( ) int x=5, b=6;. int a=7;x=? a=? b=?b=? x=5 b=6 t=4 a没定义 x=? b=? t=? a=?n自动变量(auto): 普通的局部变量 int x, y; auto int x, y; char c1; auto char c1;函数调用时,定义变量,分配存储单元。函数调用结束,收回存储单元。n全局变量:从程序执行开始,到程序的结束,存储单 元始终保持。n变量生命周期 变量从定义开始分配存储单元,到运行结束存储单元被 回收的整个过程。5.3.2 变量生命周期和静态局部变量n存储类型: 动态存储:自动变量 静态存储:全局变量、静态局部变量n用户存储空间存储区数 据 区静态存储区动态存储区static 类型名 变量表n作用范围:局部变量n生命周期:全局变量静态局部变量例5-9

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号