《计算圆柱体积》PPT课件.ppt

上传人:小飞机 文档编号:5604171 上传时间:2023-08-01 格式:PPT 页数:33 大小:260KB
返回 下载 相关 举报
《计算圆柱体积》PPT课件.ppt_第1页
第1页 / 共33页
《计算圆柱体积》PPT课件.ppt_第2页
第2页 / 共33页
《计算圆柱体积》PPT课件.ppt_第3页
第3页 / 共33页
《计算圆柱体积》PPT课件.ppt_第4页
第4页 / 共33页
《计算圆柱体积》PPT课件.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《《计算圆柱体积》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《计算圆柱体积》PPT课件.ppt(33页珍藏版)》请在三一办公上搜索。

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

2、nt main(void)double height,radius,volume;double cylinder(double r,double h);/*函数声明*/printf(Enter radius and height:);scanf(%lf%lf,例5-1源程序,/*定义求圆柱体积的函数*/double cylinder(double r,double h)double result;result=3.1415926*r*r*h;/*计算体积*/return result;/*返回结果*/,Enter radius and height:3.0 10Volume=282.743,5

3、.1.2 函数的定义,函数是指完成一个特定工作的独立程序模块。库函数:由C语言系统提供定义如scanf()、printf()等函数自定义函数:需要用户自己定义如计算圆柱体体积函数cylinder()main()也是一个函数,C程序由一个main()或多个函数构成。程序中一旦调用了某个函数,该函数就会完成一些特定的工作,然后返回到调用它的地方。函数经过运算,得到一个明确的运算结果,并需要回送该结果。例如,函数cylinder()返回圆柱的体积。函数完成一系列操作步骤,不需要回送任何运算结果。,1返回运算结果的函数定义,函数类型 函数名(形参表)/*函数首部*/*函数体*/函数实现过程 retur

4、n 表达式;,把函数运算的结果回送给主函数,只能返回一个值,函数返回值的类型,没有分号,double cylinder(double r,double h)double result;result=3.1415926*r*r*h;return result;,形参,类型1 参数1,类型2 参数2,类型n 参数n参数之间用逗号分隔,每个参数前面的类型都必须分别写明,函数类型 函数名(形参表)函数实现过程 return 表达式;,不能写成 double r,h,double cylinder(double r,double h)double result;result=3.1415926*r*r*

5、h;return result;,double cylinder(double r,double h)/*函数首部*/*函数体,写在一对大括号内*/double result;result=3.1415926*r*r*h;/*计算圆柱体积*/return result;/*返回运算结果*/,分析函数的定义,函数类型,函数名,形参表,与函数类型一致,2不返回运算结果的函数定义,void 函数名(参数表)/*函数首部*/*函数体*/函数实现过程 return;/*可以省略return*/,这类函数通常用于屏幕输出等,表示不返回结果,不能省略否则函数类型被默认定义为int,例5-2 输出5之内的数字

6、金字塔。,/*输出数字金字塔*/#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+)/*需要输出的行数*/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,5

7、.1.3 函数的调用,定义一个函数后,就可以在程序中调用这个函数。调用标准库函数时,在程序的最前面用#include命令包含相应的头文件。调用自定义函数时,程序中必须有与调用函数相对应的函数定义。,1函数调用的形式和过程,使用返回值:volume=cylinder(radius,height);printf(“%f n”,cylinder(radius,height);完成操作:pyramid(5);,常用于void类型函数的调用,常用于返回结果的函数的调用,常量、变量、表达式,函数名(实参表),函数调用的过程,计算机在执行程序时,从主函数main开始执行,如果遇到某个函数调用,主函数被暂停执

8、行,转而执行相应的函数,该函数执行完后,将返回主函数,然后再从原先暂停的位置继续执行。函数遇return或最后的大括号,返回主函数,分析函数调用的过程,#include int main(void)double height,radius,volume;double cylinder(double r,double h);printf(Enter radius and height:);scanf(%lf%lf,调用函数,实参形参,执行函数中的语句,返回调用它的地方,2参数传递,函数定义时的参数被称为形式参数(简称形参)double cylinder(double r,double h);函数

9、调用时的参数被称为实际参数(简称实参)volume=cylinder(radius,height);实参形参在参数传递过程中,实参把值复制给形参。形参和实参一一对应:数量一致,类型一致,顺序一致形参:变量,用于接受实参传递过来的值实参:常量、变量或表达式,单向传递,3函数结果返回,函数返回的两种情况完成确定的运算,有一个运算结果返回给主调函数。完成指定工作,没有确定的运算结果需返回给主调函数(函数类型void)。函数结果返回的形式:return 表达式;return(表达式);,【例5-3】定义判断奇偶数的函数even(n),定义一个判断奇偶数的函数even(n),当n为偶数时返回1,否则返回

10、0。/*判断奇偶数的函数*/int even(int n)/*函数首部*/if(n%2=0)/*判别奇偶数*/return 1;/*偶数返回1*/elsereturn 0;/*奇数返回0*/,如何调用该函数?,4函数原型声明,函数类型 函数名(参数表);double cylinder(double r,double h);void pyramid(int n);函数必须先定义后调用,将主调函数放在被调函数的后面,就像变量先定义后使用一样。如果自定义函数在主调函数的后面,就需要在函数调用前,加上函数原型声明。函数声明:说明函数的类型和参数的情况,以保证程序编译时能判断对该函数的调用是否正确。,只

11、写函数定义中的第1行(函数首部),并以分号结束。,5.2 使用函数编写程序,例5-4 输入精度e,使用格里高利公式求的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数 funpi(e)求的近似值。,例5-4 源程序,/*用格里高利公式计算的近似值,精度为e*/#include#include int main(void)double e,pi;double funpi(double e);printf(Enter e:);scanf(%lf,double funpi(double e)int denominator,flag;double item,sum;flag=1;denomin

12、ator=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,否则返回0。算法描述:对2100之间的每个数进行判断,若是素数,则输出该数。for(

13、m=2;m=100;m+)if(m是素数)printf(%d,m);,prime(m)!=0,例5-5 源程序,#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(i=2;i=n;i+)if(m%i=0)return 0;retur

14、n 1;,5.3 变量与函数,5.3.1 局部变量和全局变量5.3.2 变量生命周期和静态局部变量,5.3.1 局部变量和全局变量,局部变量在函数内定义的变量(包括形参)作用范围:本函数内部定义在复合语句内的变量作用范围:复合语句内部全局变量在函数以外定义的变量,不从属于任一函数。作用范围:从定义处到源文件结束(包括各函数),例5-6 在复合语句中定义局部变量。,#include 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 全局

15、变量定义,#include stdio.hint x;/*定义全局变量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;void f()int x=5,b=6;.int

16、 a=7;,x=?a=?b=?,b=?,x=5 b=6 t=4 a没定义,x=?b=?t=?a=?,自动变量(auto):普通的局部变量int x,y;auto int x,y;char c1;auto char c1;函数调用时,定义变量,分配存储单元。函数调用结束,收回存储单元。全局变量:从程序执行开始,到程序的结束,存储单元始终保持。变量生命周期变量从定义开始分配存储单元,到运行结束存储单元被回收的整个过程。,5.3.2 变量生命周期和静态局部变量,存储类型:动态存储:自动变量静态存储:全局变量、静态局部变量用户存储空间,存储区,static 类型名 变量表作用范围:局部变量生命周期:全局变量,静态局部变量,例5-9 静态局部变量示例,#include void fun(int k);int main(void)int k;for(k=1;k=3;k+)fun(k);return 0;void fun(int k)static int a;printf(%d,a);a+=k;,0,1,3,静态变量会记住前一次调用时留下来的值,静态变量的初值为0,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号