




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章第五章 函函 数数1.1. 掌握掌握函数定义函数定义的方法,理解的方法,理解函数名、参数函数名、参数与与返回返回值值的含义。的含义。2.2. 熟练掌握熟练掌握函数调用函数调用的基本方法,理解的基本方法,理解函数声明函数声明的的作用。作用。3.3. 掌握掌握全局变量全局变量和和局部变量局部变量的概念及其使用要点。的概念及其使用要点。4.4. 通过函数的设计与实现,全面掌握结构化程序设通过函数的设计与实现,全面掌握结构化程序设计方法计方法, ,自觉运用自觉运用“CDIOCDIO理念理念”实现计算机编程。实现计算机编程。本章教学内容本章教学内容1. 计算圆柱体积计算圆柱体积2. 使用函数编写程
2、序使用函数编写程序3. 变量与函数变量与函数4. 课后思考课后思考 程序解析程序解析 函数的定义函数的定义 函数的调用函数的调用例例5-1 5-1 输入圆柱输入圆柱体体的高和半径,求圆柱体积的高和半径,求圆柱体积,volume=*r2*h。要求定义和调用函数要求定义和调用函数cylinder(r, h )计算圆计算圆柱体的体积。柱体的体积。 / /* * 计算圆柱体积计算圆柱体积 * */ /#include int main( void ) double height, radius, volume;double cylinder (double r, double h); /* 函数声明函
3、数声明*/printf (Enter radius and height: );scanf (%lf%lf, &radius, &height); /* 调用函数调用函数,返回值赋给,返回值赋给volume */volume = cylinder (radius, height );printf (Volume = %.3fn, volume);return 0;/* 定义求圆柱体积的函数定义求圆柱体积的函数 */double cylinder (double r, double h)double result;result =3.1415926 * r * r * h; /*
4、 计算体积计算体积 */return result; /* 返回结果返回结果 */Enter radius and height: 3.0 10Volume = 282.743函数是指完成一个特定工作的独立程序模块。函数是指完成一个特定工作的独立程序模块。库函数:由库函数:由C C语言系统提供定义语言系统提供定义如如scanfscanf()、()、printfprintf()等函数()等函数自定义函数:需要用户自己定义自定义函数:需要用户自己定义如计算圆柱体体积函数如计算圆柱体体积函数cylindercylinder()()main()main()也是一个函数,也是一个函数,C C程序由一个程
5、序由一个main()main()或多个或多个函数构成。函数构成。程序中一旦调用了某个函数,该函数就会完成一些程序中一旦调用了某个函数,该函数就会完成一些特定的工作,然后返回到调用它的地方。特定的工作,然后返回到调用它的地方。函数经过运算,得到一个明确的函数经过运算,得到一个明确的运算结果运算结果,并需要回送,并需要回送该结果。例如,函数该结果。例如,函数cylinder()cylinder()返回圆柱的体积。返回圆柱的体积。函数完成一系列操作步骤,函数完成一系列操作步骤,不需要回送任何运算结果不需要回送任何运算结果。函数类型函数类型 函数名(形参表)函数名(形参表)/ /* * 函数首部函数首
6、部 * */ / / /* * 函数体函数体 * */ / 函数实现过程函数实现过程 return return 表达式;表达式; 把函数运算的结果回送给主函数把函数运算的结果回送给主函数只能返回一个值只能返回一个值函数返回值的类型函数返回值的类型没有分号没有分号double cylinder (double r, double h) double result; result = 3.1415926 * r * r * h; return result;类型类型1 1 参数参数1 1 ,类型,类型2 2 参数参数2 2 ,类型,类型n n 参数参数n n参数之间用逗号分隔,每个参数前面的类型
7、都必须分别写明参数之间用逗号分隔,每个参数前面的类型都必须分别写明函数类型函数类型 函数名(形参表)函数名(形参表) 函数实现过程函数实现过程 return return 表达式;表达式; 不能写成不能写成 double r, hdouble r, hdouble cylinder (double r, double h) double result; result =3.1415926 * r * r * h; return result;double cylinder (double r, double h) / /* * 函数首部函数首部 * */ / /* * 函数体函数体,写在一对大
8、括号内,写在一对大括号内 * */ / double result;result =3.1415926 * r * r * h; / /* * 计算圆柱体积计算圆柱体积 * */ /return result; / /* * 返回运算结果返回运算结果* */ /函数类型函数类型函数名函数名形参表形参表与函数类型一致与函数类型一致voidvoid 函数名(参数表)函数名(参数表) / /* * 函数首部函数首部 * */ / / /* * 函数体函数体 * */ / 函数实现过程函数实现过程 returnreturn; / /* * 可以省略可以省略return return * */ / 这类
9、函数通常用于屏幕输出等这类函数通常用于屏幕输出等表示不返回结果表示不返回结果不能省略不能省略否则,函数类型被默认定义为否则,函数类型被默认定义为intint/ /* * 输出数字金字塔输出数字金字塔 * */ /#include int main (void) void pyramid (int n);/* 函数声明函数声明 */pyramid(5);/* 调用函数,输出数字金字塔调用函数,输出数字金字塔 */return 0;void pyramid (int n) /* 函数定义函数定义 */int i, j;for (i = 1; i = n; i+)/* 需要输出的行数需要输出的行数
10、*/ for (j = 1; j = n-i; j+) /* 输出每行左边的空格输出每行左边的空格 */printf( ); for (j = 1; j = i; j+) /* 输出每行的数字输出每行的数字 */ printf( %d , i); /* 每个数字的前后各有一个空格每个数字的前后各有一个空格 */ putchar (n); 12 2 3 3 3 4 4 4 45 5 5 5 5 定义一个函数后,就可以在程序中调用这定义一个函数后,就可以在程序中调用这个函数。个函数。 调用标准库函数调用标准库函数时,在程序的最前面用时,在程序的最前面用#include#include命令包含相应的
11、头文件。命令包含相应的头文件。 调用自定义函数调用自定义函数时,程序中必须有与调用时,程序中必须有与调用函数相对应的函数相对应的函数定义函数定义。n使用返回值:使用返回值:volume = cylinder (radius, height );printf(“%f n” , cylinder (radius, height );n完成操作:完成操作:pyramid(5);常用于常用于voidvoid类型函数的调用类型函数的调用常用于返回结果的函数的调用常用于返回结果的函数的调用常量、变量、表达式常量、变量、表达式函数名函数名(实参表实参表)#include int main( void ) d
12、ouble height, radius, volume;double cylinder (double r, double h); printf (Enter radius and height: );scanf (%lf%lf, &radius, &height);volume = cylinder (radius, height );printf (Volume = %.3fn, volume);return 0;double cylinder (double r, double h) double result;result =3.1415926 * r * r * h
13、; return result; 调用函数调用函数实参实参形参形参执行函数中的语句执行函数中的语句返回调用它的地方返回调用它的地方71513114/* 用格里高利公式计算用格里高利公式计算的近似值,的近似值,精度为精度为e */#include #include int main (void) double e, pi; double funpi (double e); printf (Enter e:); scanf (%lf, &e); pi = funpi (e); printf (pi = %fn, pi);return 0;double funpi (double e) in
14、t denominator, flag; double item, sum; flag = 1; denominator = 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 求求100100以内的全部素数,每行输出以内的全部素数,每行输出1010个。素数个。
15、素数就是只能被就是只能被1 1和自身整除的正整数,和自身整除的正整数,1 1不是素数,不是素数,2 2是素数。是素数。要求定义和调用函数要求定义和调用函数prime (m)prime (m)判断判断m m是否为是否为素数,当素数,当m m为素数时返回为素数时返回1 1,否则返回,否则返回0 0。算法描述:算法描述:对对2 2100100之间的每个数进行判断,若是素数,则输之间的每个数进行判断,若是素数,则输出该数。出该数。for(m = 2; m = 100; m+) for(m = 2; m = 100; m+) if ( if (m m是素数是素数) ) printf(%d , m); p
16、rintf(%d , m); prime(m) != 0prime(m) != 0#include #include int main(void) int count, m; int prime (int m); count = 0; for(m = 2; m = 100; m+) if ( prime(m) != 0 ) printf(%6d, m ); count+; if (count %10 = 0) printf (n); printf (n);int prime (int m) int i, n; if ( m = 1 ) return 0; n = sqrt (m); for(
17、i = 2; i = n; i+) if (m % i = 0) return 0; return 1; 局部变量和全局变量局部变量和全局变量 变量生命周期和静态局部变量变量生命周期和静态局部变量 局部变量局部变量 在函数内定义的变量(包括形参)在函数内定义的变量(包括形参)作用范围作用范围:本函数内部本函数内部 定义在复合语句内的变量定义在复合语句内的变量作用范围作用范围:复合语句内部复合语句内部 全局变量全局变量 在函数以外定义的变量,不从属于任一函数。在函数以外定义的变量,不从属于任一函数。作用范围作用范围:从定义处到源文件结束从定义处到源文件结束(包括各函数)(包括各函数)#inclu
18、de int main (void) int a; a = 1; / /* * 复合语句开始复合语句开始 * */ / int b = 2; b = a + b; a = a + b; / /* * 复合语句结束复合语句结束 * */ / printf (%d , a ); return 0;b:b:小范围内的临时变量小范围内的临时变量 4#include stdio.hint x; /* 定义全局变量定义全局变量x */int f( ) int x = 4; /* x为局部变量为局部变量 */ return x;int main(void) int a = 1; x = a; /* 对全局变
19、量对全局变量 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 ;void f( ) int x=5, b=6; .int a=7; x=? a=? b=?b=? x=5 b=6 t=4 a没定义没定义 x=? b=? t=? a=? 自动变量(自动变量(autoauto): : 普通的局部变量普通的局部变量int x, y; auto int x, y;char c1; auto char c1;函数调用时,定义变量,分配存储单元函数调用时,定义变量,分配存储单元。函数调用结束,收回存储单元函数调用结束,收回存储单元。 全局变量全局变量:从:从程序程序执行开始,到程序的结束执行开始,到程序的结束,存储存储单元始终保持单元始终保持。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司组拔河比赛活动方案
- 公司春游野餐活动方案
- 公司特色聚餐活动方案
- 公司美食节摆摊活动方案
- 公司自制寿司活动方案
- 公司组织种地活动方案
- 公司沙滩拓展活动方案
- 公司组织拓展活动方案
- 2025年智能制造工程师职业考试题及答案
- 2025年营养学与食品安全的考试试卷及答案
- 企业内刊策划
- 《济南市供用水合同》
- 智能化设备技术规格书范本
- 工程拆墙合同范本
- 2024夏季东南亚风情水上乐园泼水电音节开幕式活动方案-52P
- 模拟联合国大会流程及议题讲义模板
- 呼伦贝尔职业技术学院辅导员考试试题2024
- 无损检测PTⅡ级渗透检测理论考试题库
- 《安全仪表系统SIS》课件
- 《项目管理WBS分解》课件
- 万科物业新员工入职考试卷附答案
评论
0/150
提交评论