C语言课件第6章函数1new.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言课件第6章函数1new.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 函数 new
- 资源描述:
-
1、1第 六 章 模块化程序设计 -函数2一、函数概述一、函数概述二、函数的定义及调用二、函数的定义及调用三、局部变量和全局变量三、局部变量和全局变量四、变量的存储类别四、变量的存储类别五、预编译命令五、预编译命令主要内容主要内容:3本章要点 怎样定义函数?如何调用函数?如何声明函数?什么是函数的参数?在函数调用时,参数是如何传递的?在使用函数的过程中,要注意哪些问题?怎样确定函数的参数?如何使用局部变量和全局变量?什么是静态变量?4 怎样把多个函数组织起来?怎样用结构化程序设计的思想解决问题?怎样用函数嵌套求解复杂的问题?怎样用函数递归解决问题?预编译命令的作用?5一、一、函数概述函数概述 把大
2、问题分解成若干小问题,小问题再进一步分解成若干更小的问题;写程序时,用main()解决整个问题,用子函数解决小问题,main()调用解决小问题的子函数;这些子函数又进一步调用解决更小问题的函数,从而形成函数的嵌套调用。main()函数函数1函数函数2函数函数m函数函数1_1函数函数1_2函数函数m_1函数函数m_n程序结构:程序结构:6C语言中的数学库函数 使用数学库中的函数时,应使用使用数学库中的函数时,应使用#include#include 命令将数学头文件命令将数学头文件 math.h math.h 包含到程序中。包含到程序中。数学函数可用来完成一些常用的数学计算。数学函数可用来完成一些
3、常用的数学计算。在使用函数时,通常按如下顺序书写:在使用函数时,通常按如下顺序书写:函数名、左圆括函数名、左圆括 号、号、参数(或用逗号分开的参数列表)、右圆括号。参数(或用逗号分开的参数列表)、右圆括号。例如:printf(“%8.2f”,sqrt(900.0);说明如下:执行这条语句时,就会通过调用函数sqrt计算900.0 的平方根。数900.0 是函数sqrt的参数;函数sqrt的参数是double型;函数值也是double型。上述语句的打印结果为30.00。7(一)、(一)、函数的定义函数的定义(二)、(二)、函数的调用函数的调用(三)、函数编程举例(三)、函数编程举例(四)、(四)
4、、函数的嵌套调用函数的嵌套调用(五)、函数的递归调用(五)、函数的递归调用二、函数的定义及调用二、函数的定义及调用8(一)函数的定义 定义:函数是可重复使用的程序段,从其他的程序段中均可通过调用该函数来执行该函数所包括的程序段。函数的分类:库函数:由C语言系统提供定义如scanf()、printf()等函数 自定义函数:需要用户自己定义如计算圆柱体体积函数cylinder()无参函数:不需要使用(代入)外来数据的函数 有参函数:需要使用(代入)外来数据的函数9(一)函数的定义 函数是指完成一个特定工作的独立程序模块。main()也是一个函数,一个C程序由一个main()或多个函数构成。程序中一
5、旦调用了某个函数,该函数就会完成一些特定的工作,然后返回到调用它的地方。有的函数经过运算,得到一个明确的运算结果,并需要回送该结果。例如,函数cylinder()返回圆柱的体积。有的函数完成一系列操作步骤,不需要回送任何运算结果。101不返回运算结果的函数定义void 函数名(参数表)函数实现过程 return;这类函数通常用于屏幕输出等这类函数通常用于屏幕输出等表示不返回结果表示不返回结果在在VC环境下函数的返回值类型不能省略。环境下函数的返回值类型不能省略。/*函数首部函数首部*/*函数体函数体*/*可以省略可以省略return*/11例6-1 输出5之内的数字金字塔。/*输出数字金字塔输
6、出数字金字塔*/#include void pyramid()/*函数定义函数定义*/int i,j;for(i=1;i=5;i+)/*需要输出的行数需要输出的行数*/for(j=1;j=5-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 12例6-2 输出 n 之内的数字金字塔。/*输出数字金字塔输出数字金字塔*/#include void
7、pyramid(int n)/*函数定义函数定义*/int i,j;for(i=1;i=n;i+)/*需要输出的行数需要输出的行数*/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 13举例计算两个三角形面积 例6-3 输入两个三角形三边长,分别求这两个三角形的面积。面积公式:s=其中,p=(a+b+c)/2 要求定义和
8、调用函数 triangle(a,b,c)计算三角形的面积。)()(cpbpapp14#include#include int main()double a1,b1,c1,a2,b2,c2,p1,p2,s1,s2;printf(请输入第一个三角形的三边长请输入第一个三角形的三边长:);scanf(%lf%lf%lf,&a1,&b1,&c1);printf(请输入第二个三角形的三边长请输入第二个三角形的三边长:);scanf(%lf%lf%lf,&a2,&b2,&c2);p1=(a1+b1+c1)/2;s1=sqrt(p1*(p1-a1)*(p1-b1)*(p1-c1);p2=(a2+b2+c2)
9、/2;s2=sqrt(p2*(p2-a2)*(p2-b2)*(p2-c2);printf(“s1=%.3f,s2=%.3f n,s1,s2);return 0;不用自定义函数的源程序出现出现功能重复功能重复的语句的语句需优化需优化15例6-3 自定义的函数triangle分析:该函数须代入三边长度值,且有一结果值分析:该函数须代入三边长度值,且有一结果值/*首先定义求三角形面积的函数首先定义求三角形面积的函数*/double triangle(double a,double b,double c)double p,s;/*对语句中使用的变量进行定义对语句中使用的变量进行定义*/p=(a+b+c
10、)/2;s=sqrt(p*(p-a)r*(p-b)*(p-c);/*计算面积计算面积*/return s;/*返回结果返回结果*/16#include#include int main()double a1,b1,c1,a2,b2,c2,p1,p2,s1,s2;printf(请输入第一个三角形的三边长请输入第一个三角形的三边长:);scanf(%lf%lf%lf,&a1,&b1,&c1);printf(请输入第二个三角形的三边长请输入第二个三角形的三边长:);scanf(%lf%lf%lf,&a2,&b2,&c2);s1=triangle(a1,b1,c1);s2=triangle(a2,b2
11、,c2);printf(s1=%.3f,s2=%.3f n,s1,s2);return 0;例6-3 该程序的main函数变为:例6-3的源程序由两个函数组成。他们之间是调用和被调用的关系。main 函数调用triangle函数。17double triangle(double a,double b,double c)double s,p;p=(a+b+c)/2;result=sqrt(p*(p-a)*(p-b)*(p-c);return s;函数定义函数类型函数类型 函数名(形参表)/*函数首部函数首部*/*函数体函数体*/函数实现过程函数实现过程 return 表达式表达式;把函数运算的结
12、果回送给主函数把函数运算的结果回送给主函数只能返回一个值只能返回一个值函数函数返回返回值的值的类型类型没有分号没有分号18形参变量的定义类型1 参数1,类型2 参数2,类型n 参数n参数之间用逗号分隔,每个参数前面的类型都必须分别写明函数类型函数类型 函数名(形参表)函数名(形参表)函数实现过程函数实现过程 return 表达式;表达式;不能写成不能写成 double r,hdouble triangle(double a,double b,double c)double s,p;p=(a+b+c)/2;result=sqrt(p*(p-a)*(p-b)*(p-c);return s;19do
13、uble cylinder(double r,double h)/*函数首部*/*函数体,写在一对大括号内*/double result;result=3.1415926*r*r*h;/*计算圆柱体积*/return result;/*返回运算结果*/分析函数的定义函数类型函数类型函数名函数名形参表形参表与函数类型一致与函数类型一致20(三)函数的调用 定义一个函数后,就可以在程序中调用这个函数。调用标准库函数时,在程序的最前面用#include命令包含相应的头文件。调用自定义函数时,程序中必须有与调用函数相对应的函数定义。211函数调用的形式和过程 使用返回值:s=triangle(a,b,
14、c);printf(“%f n”,triangle(a,b,c););完成操作:pyramid(5);/这也称为函数调用语句常用于常用于voidvoid类型函数的调用类型函数的调用常用于返回结果的函数的调用常用于返回结果的函数的调用常量、变量、表达式常量、变量、表达式函数名函数名(实参表实参表)22函数调用的过程 计算机在执行程序时,从主函数main开始执行,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后,将返回主函数,然后再从原先暂停的位置继续执行。函数遇return或最后的大括号,返回主函数23包含子函数的程序的执行过程包含子函数的程序的执行过程(1)(1)程序
15、的执行从主函数的第一条语句程序的执行从主函数的第一条语句开始;开始;遇到函数调用时,暂停在主调函数中遇到函数调用时,暂停在主调函数中的执行,转去处理函数调用;的执行,转去处理函数调用;为被调函数的形参变量分配内存单元,为被调函数的形参变量分配内存单元,并将实参的值赋给形参变量并将实参的值赋给形参变量.为函数内定义的内部变量分配内存单为函数内定义的内部变量分配内存单元。元。执行被调函数的函数体,直到遇到执行被调函数的函数体,直到遇到return语句;语句;此时,将释放为形参变量和内部变量此时,将释放为形参变量和内部变量分配的内存单元。分配的内存单元。程序的执行流程又转回到主调函数,程序的执行流程
展开阅读全文