




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12讲 函数的定义及调用,一、概述 1、 C程序的模块化结构 2、 函数定义的一般形式 二、函数间的数据传送 1、 形参与实参 2、 函数的返回值 3、 Void函数,4、 函数原型 5、 数组作为函数的参数 三、函数的调用 1、 函数调用的一般形式 2、 函数嵌套调用,1、 C程序的模块化结构,结构化程序设计方法: 自顶向下,逐步细化; 模块化设计; 结构化编码。 特点: 程序结构清晰,易于维护,增加了函数的可重用性和可扩充性。,一、概述,格式一 : 类型符 函数名称( 形参表 ) 形参说明 数据说明部分 可执行语句 格式二 : 类型符 函数名称( 类型 形参1 , ) 数据说明部分 可执行语句 ,2、 函数定义的一般形式,函数定义的一般形式举例:,(1) float sum ( x , y ) float x , y ; int z ; z = x + y ; return z ; ,(2) float sum (float x, float y ) int z ; z = x + y ; return z ; ,函数定义的一般形式说明:,(1) float sum ( x , y ) float x , y ; int z ; z = x + y ; return z ; ,类型说明符: 指明函数的类型,函数的类型是指函数的返回值的类型,函数返回值所具有的数据类型的种类与变量相同。省略时则默认为int型。若明确表示函数 “不带返回值“,可以用 “ void “ 作类型符,称“无类型“或称“空类型“。,float sum ( x , y ) float x , y ; int z ; z = x + y ; return z ; ,函数名: 通常是一个标识符,在一个程序中除了主函数外其余函数的名字可以任意取,但应有意义。 “( )”函数标志。,float sum ( float x , float y ) float sum ( x , y ) float x , y ; int z ; z = x + y ; return z ; ,参数表( 形参表 ): 函数定义时的参数称为形式参数,形式参数彼此间用逗号分隔。 没有形式参数时称无参函数,但此时函数名后的圆括号不能省。 形参说明是用来指明各个形式参数的类型。它随形参的存在而存在。,float sum ( x , y ) float x , y ; int z ; z = x + y ; return z ; ,函数体: 函数中最外层一对花括弧“ ”括起来的内容,它由数据说明部分和可执行语句组成,决定函数要实现的功能、完成的任务。 函数体内若无任何语句时,为空函数。,例 编写自定义函数计算:,分析: 确定形参:求 c 必须知道 f 的大小,设形参为temp。 确定函数类型:函数的返回值即为 c 的值,设为实型。,程序:float ftoc( temp ) float temp ; float c ; c =(5./9.)*( temp 32 ); return c ; ,例 编写一个自定义函数求 n!,分析: 确定形参: 求 n!必须知道 n 的大小,设形参为 n。 确定函数类型: 函数的返回值即为 n!的值,设为实型。,程序: float jiechen( int n ) float x, y ; for ( x=y=1.0; x=n; x+ ) y *= x ; return y ; ,实参(实际参数)是函数调用时调用函数传送给被调用函数参数的实际值。实参可以是常量、变量和表达式,实参必须有确定的值。 例如: fabs( -2 ); putchar( c ); sqrt((x*x+2)*(y+z);,二、函数间的数据传送,1、 形参与实参,形参(形式参数)是函数定义时,参数表中的参数。形式参数只能是变量。在函数定义时,参数表中的形参并没有具体的值,系统也不为其分配存储单元。 例如:max( float x, float y ) float ftoc( float temp ) ,例 形参和实参的运用,try( int x, int y, int z ) printf( “2) x=%d, y=%d, z=%dn“, x, y, z); z = x + y ; x = x * x ; y = y * y ; printf( “3) x=%d, y=%d, z=%dn“, x, y, z); main( ) int a=2, b =3, c=4 ; printf( “1) a=%d, b=%d, c=%dn“, a, b, c ); try( a, b, c ) ; printf( “4) a=%d, b=%d, c=%dn“, a, b, c ); ,说明:,函数的返回值:当被调用函数在完成一定的功能后,可以将处理的结果返回到调用函数。 方式:return 语句 作用:将表达式的值传给调用函数,并把控制权转向调用函数实现函数的返回,即结束被调用函数的执行,并将控制返回到调用它的函数。 格式: return ( 表达式 ) ;,2、 函数的返回值,对于不需要提供返回值的函数可以直接用void作为函数类型定义,以表明此函数返回值为”无类型”或”空类型”。 例:void psch( ) printf(“Wuhan Universityn“); main() psch( ); ,3、 void函数,函数原型:在定义或调用函数前,对该函数进行声明。 作用:将函数名、函数类型及形参个数、类型、顺序等通知编译系统,当函数被调用时,可对实参、形参的类型、个数匹配情况进行检查。 格式: 类型符 函数名(参数类型1, ); 或: 类型符 函数名(类型符 形参1, );,4、 函数原型,例 利用变量换数,void huanshu1( int x, int y ); /* 函数原型声明*/ main( ) /* 主函数 */ int a=5,b=10; printf(“ 2)a = %d,b = %dn“,a ,b); huanshu1( a , b ) ; printf(“ 3)a = %d,b = %dn“,a ,b); void huanshu1( int x, int y ) /* 利用变量换数 */ int t ; printf(“ 1)x = %d ,y = %dn“,x ,y ); t = x ; x = y ; y = t ; printf(“ 4)x = %d ,y = %dn“,x ,y ); ,例 判定素数。,#include “math.h“ int isprime( int ); /* 函数原型声明*/ main( ) int x=35; if ( isprime(x) printf(“%d 是素数。n“, x ); else printf(“%d 不是素数。n“, x ); isprime( int a ) int i; for ( i=2 ; i=sqrt(double)a); i+ ) if ( a%i = 0) return 0 ; return 1 ; ,数组元素做函数实参,遵循”值传送”特性,此时形参为变量。 数组名可做实参和形参,传送的是整个数组。 在用数组名做函数参数时,实参和形参都应该用数组(或指针变量)。,5、 数组作为函数的参数,数组元素作为函数参数举例:,(1),(2),数组名作函数参数时应注意:,1)数组名作函数参数时,应在主调函数和被调函数中分别定义数组。 2)实参数组与形参数组的类型必须相同,但大小可以不同。 3)形参数组的一维下标可以省略。 4)数组名表示的是数组元素的首地址,数组名作函数参数时,传递的是整个数组。实参与形参之间的数据传递是地址传递。,数组名作函数的参数举例:,例 利用数组换数,void huanshu2( int shuzu , int n); main( ) /* 主函数 */ int ab2= 5 , 10 , i; for (i=0;i2;i+) printf(“1)ab%d=%2d “,i,abi); huanshu2( ab, 2 ); printf(“n“); for (i=0;i2;i+) printf(“4)ab%d=%2d “,i,abi); ,void huanshu2(int shuzu , int n ) int t, i; printf(“n“); for (i=0;in;i+) printf(“2)shuzu%d=%5d “,i,shuzui); for (i=0;in-1;i+) t=shuzui; shuzui=shuzui+1; shuzui+1=t; printf(“n“); for ( i=0; in; i+ ) printf(“3)shuzu%d=%5d “,i,shuzui); ,说明:,ab =,shuzu = 2000H,int ab 2 = 5 , 10 ;,huanshu2( ab , 2 ) ;,for ( i=0; in-1; i+) t = shuzui; shuzui=shuzui+1; shuzu i+1 =t ; ,参数传递小结:,格式: 函数名( 实参列表 ); 说明: 实参与形参的个数相等、类型相同、顺序一致,呈一一对应的关系。 实参的求值顺序不确定,与所用系统有关。 实参应有确定的值。,三、函数的调用,1、 函数调用的一般形式,方式 1)函数语句: 例 printf(”); 2)函数表达式: 例 c=2*pow (3.5 ,6); 3)函数参数: 例 c=2*pow (pow (3.5,6),6); 例 printf(”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年延安通和电业有限责任公司招聘(5人)模拟试卷带答案详解
- 2025年沙市区招商公司公开招聘职员6人模拟试卷及答案详解(典优)
- 2025江西省肿瘤医院抚州医院(抚州市立医院)招聘第二批编外人员30人考前自测高频考点模拟试题及一套完整答案详解
- 2025春季呼和浩特石化分公司高校毕业生招聘20人考前自测高频考点模拟试题附答案详解(突破训练)
- 2025江西吉安市白鹭洲中学招聘文印室工作人员2人考前自测高频考点模拟试题及答案详解1套
- 2025贵州思南县事业单位引进高层次及急需紧缺人才83人(第二批)考前自测高频考点模拟试题及1套完整答案详解
- 2025广东省农业农村厅所属事业单位招聘27人模拟试卷及完整答案详解
- 2025河南郑州管城区紫东路社区卫生服务中心招聘2人模拟试卷有完整答案详解
- 2025年枣庄市胸科医院公开招聘备案制工作人员(13人)模拟试卷带答案详解
- 2025安徽宿州市融资担保集团有限公司招聘模拟试卷及完整答案详解1套
- 2024年中国盐渍海带市场调查研究报告
- 新学期新起点励志奋斗青春初三毕业班开学第一课主题班会课件
- 分包单位与班组签订合同
- 盐酸右美托咪定鼻喷雾剂-临床用药解读
- 危险货物装载与卸载操作规程
- 《映山红》PPT课件(安徽省市级优课)-五年级音乐课件
- 林则徐课件完整版
- 投资学英文版课件Ch 3 Securities markets
- 氟喹诺酮类药物残留的检测课件
- 2021Z世代职场现状与趋势调研报告
- 全国编辑记者资格证考试复习资料
评论
0/150
提交评论