




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
函数,引例,/*【例5-1】输入圆柱的高和半径,求圆柱体积,volume=3.1415926*r*r*h。要求定义和调用函数cylinder(r,h)计算圆柱体的体积。*/*计算圆柱体积*/#includeintmain(void)doubleheight,radius,volume;doublecylinder(doubler,doubleh);/*函数声明*/printf(Enterradiusandheight:);/*输入提示*/scanf(%lf%lf,/*返回结果*/,函数的定义,函数是指完成一个特定工作的独立程序模块。库函数:由C语言系统提供定义如scanf()、printf()等函数自定义函数:需要用户自己定义如计算圆柱体体积函数cylinder()main()也是一个函数,C程序由一个main()或多个函数构成。程序中一旦调用了某个函数,该函数就会完成一些特定的工作,然后返回到调用它的地方。函数经过运算,得到一个明确的运算结果,并需要回送该结果。例如,函数cylinder()返回圆柱的体积。函数完成一系列操作步骤,不需要回送任何运算结果。,1.返回运算结果的函数定义,函数类型函数名(形参表)/*函数首部*/*函数体*/函数实现过程return表达式;,把函数运算的结果回送给主函数,只能返回一个值,函数返回值的类型,doublecylinder(doubler,doubleh)doubleresult;result=3.1415926*r*r*h;returnresult;,形参,类型1参数1,类型2参数2,类型n参数n参数之间用逗号分隔,每个参数前面的类型都必须分别写明,函数类型函数名(形参表)函数实现过程return表达式;,不能写成doubler,h,doublecylinder(doubler,doubleh)doubleresult;result=3.1415926*r*r*h;returnresult;,分析函数的定义,doublecylinder(doubler,doubleh)/*函数首部*/*函数体,写在一对大括号内*/doubleresult;result=3.1415926*r*r*h;/*计算圆柱体积*/returnresult;/*返回运算结果*/,函数类型,函数名,形参表,与函数类型一致,2.不返回运算结果的函数定义,void函数名(参数表)/*函数首部*/*函数体*/函数实现过程return;/*可以省略return*/,这类函数通常用于屏幕输出等,表示不返回结果,不能省略否则函数类型被默认定义为int,/*【例5-2】输出5之内的数字金字塔。*/*输出数字金字塔*/#includeintmain(void)voidpyramid(intn);/*函数声明*/pyramid(5);/*调用函数,输出数字金字塔*/return0;voidpyramid(intn)/*函数定义*/inti,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);,122333444455555,函数的调用,定义一个函数后,就可以在程序中调用这个函数。调用标准库函数时,在程序的最前面用#include命令包含相应的头文件。调用自定义函数时,程序中必须有与调用函数相对应的函数定义。,1函数调用的形式和过程,使用返回值:volume=cylinder(radius,height);printf(“%fn”,cylinder(radius,height);完成操作:pyramid(5);,常用于void类型函数的调用,常用于返回结果的函数的调用,常量、变量、表达式,函数名(实参表),函数调用的过程,计算机在执行程序时,从主函数main开始执行,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后,将返回主函数,然后再从原先暂停的位置继续执行。函数遇return或最后的大括号,返回主函数,分析函数调用的过程,#includeintmain(void)doubleheight,radius,volume;doublecylinder(doubler,doubleh);printf(Enterradiusandheight:);scanf(%lf%lf,调用函数,实参形参,执行函数中的语句,返回调用它的地方,2参数传递,函数定义时的参数被称为形式参数(简称形参)doublecylinder(doubler,doubleh);函数调用时的参数被称为实际参数(简称实参)volume=cylinder(radius,height);实参形参在参数传递过程中,实参把值复制给形参。形参和实参一一对应:数量一致,类型一致,顺序一致形参:变量,用于接受实参传递过来的值实参:常量、变量或表达式,单向传递,3函数结果返回,函数返回的两种情况完成确定的运算,有一个运算结果返回给主调函数。完成指定工作,没有确定的运算结果需返回给主调函数(函数类型void)。函数结果返回的形式:return表达式;return(表达式);,/*【例5-3】定义一个判断奇偶数的函数even(n),当n为偶数时返回1,否则返回0。*/*判断奇偶数的函数*/inteven(intn)/*函数首部*/if(n%2=0)/*判别奇偶数*/return1;/*偶数返回1*/elsereturn0;/*奇数返回0*/,4函数原型声明,函数类型函数名(参数表);doublecylinder(doubler,doubleh);voidpyramid(intn);函数必须先定义后调用,将主调函数放在被调函数的后面,就像变量先定义后使用一样。如果自定义函数在主调函数的后面,就需要在函数调用前,加上函数原型声明。函数声明:说明函数的类型和参数的情况,以保证程序编译时能判断对该函数的调用是否正确。,/*【例5-4】输入精度e,使用格里高利公式求的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数funpi(e)求的近似值。*/*用格里高利公式计算的近似值,精度为e*/#include#includeintmain(void)doublee,pi;/*e代表精度*/doublefunpi(doublee);/*函数声明*/printf(Entere:);/*提示用户输入精度*/scanf(%lf,/*【例5-5】求100以内的全部素数,每行输出10个。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。要求定义和调用函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0。*/*使用函数求100以内的全部素数*/#include#include/*调用求平方根函数,需要包含数学库*/intmain(void)intcount,m;intprime(intm);/*函数声明*/count=0;/*count记录素数的个数,用于控制输出格式*/for(m=2;m=100;m+)if(prime(m)/*调用prime(m)判断m是否为素数*/printf(%6d,m);/*输出m*/count+;/*累加已经输出的素数个数*/if(count%10=0)printf(n);/*如果count是10的倍数,换行*/printf(n);/*定义判断素数的函数,如果x是素数则返回1(真);否则返回0(假)*/intprime(intm)inti,n;if(m=1)return0;/*1不是素数,返回0*/n=sqrt(m);for(i=2;i=n;i+)if(m%i=0)/*如果m不是素数*/return0;/*返回0*/return1;/*m是素数,返回1*/,变量与函数局部变量和全局变量,局部变量在函数内定义的变量(包括形参)作用范围:本函数内部定义在复合语句内的变量作用范围:复合语句内部全局变量在函数以外定义的变量,不从属于任一函数。作用范围:从定义处到源文件结束(包括各函数),例5-6在复合语句中定义局部变量。,#includeintmain(void)inta;a=1;/*复合语句开始*/intb=2;b=a+b;a=a+b;/*复合语句结束*/printf(%d,a);return0;,b:小范围内的临时变量,4,例5-7全局变量定义,#includestdio.hintx;/*定义全局变量x*/intf()intx=4;/*x为局部变量*/returnx;intmain(void)inta=1;x=a;/*对全局变量x赋值*/a=f();/*a的值为4*/intb=2;b=a+b;/*b的值为4*/x=x+b;/*全局变量运算*/printf(%d%d,a,x);return0;,4,7,若局部变量与全局变量同名,局部变量优先,变量作用范围示例,intx=1;voidmain()inta=2;.intb=3;.f();.intt=4;voidf()intx=5,b=6;.inta=7;,x=?a=?b=?,b=?,x=5b=6t=4a没定义,x=?b=?t=?a=?,变量与函数变量生命周期和静态局部变量,自动变量(auto):普通的局部变量intx,y;autointx,y;charc1;autocharc1;函数调用时,定义变量,分配存储单元。函数调用结束,收回存储单元。全局变量:从程序执行开始,到程序的结束,存储单元始终保持。变量生命周期变量从定义开始分配存储单元,到运行结束存储单元被回收的整个过程。,存储区,存储类型:动态存储:自动变量静态存储:全局变量、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年校园安全教育总结模版
- 《临床护理实践》课件
- 毕业生幼儿园实习心得体会模版
- 2025中学教师劳动合同
- 2025劳动合同协议书范本
- 2025年如何准确解决合同争议
- 工作报告程序员员工工作总结模版
- 2025年健身房转让合同范本
- 2025简化版抵押轿车借款合同模板
- 马克思主义基本原理知识点总结模版
- 新外研版三年级英语下册期中测试卷(汇编)
- 1-如何做好今年中考语文的复习备考
- 精神病学课件躯体治疗(精神病学)
- FeNO测定及应用演示版课件
- 考试焦虑主题班会课件
- 冀教版五年级下册美术第12课《寓言成语故事多》课件
- 英语演讲Artificial intelligence人工智能课件共课件
- 建设工程防渗漏验收检查表
- 铁皮石斛 组织培养 栽培 试验 实验
- 中国联通cBSS系统使用培训-第一部分
- 货币的起源与发展
评论
0/150
提交评论