收藏 分享(赏)

第8讲_C课件函数三级网络.ppt

上传人:微传9988 文档编号:3393192 上传时间:2018-10-23 格式:PPT 页数:29 大小:415.50KB
下载 相关 举报
第8讲_C课件函数三级网络.ppt_第1页
第1页 / 共29页
第8讲_C课件函数三级网络.ppt_第2页
第2页 / 共29页
第8讲_C课件函数三级网络.ppt_第3页
第3页 / 共29页
第8讲_C课件函数三级网络.ppt_第4页
第4页 / 共29页
第8讲_C课件函数三级网络.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、第八讲,Begin:,函数,C程序的模块化结构 函数的分类与定义 函数调用的一般形式 函数的参数 函数的返回值 数组作为函数参数,C程序的模块化结构,模块化程序设计方法:人们在求解某个复杂问题时,通常采用逐步分解、分而治之的方法,也就是将一个大问题分解成若干个比较容易求解的小问题,然后分别求解。程序员在设计一个复杂的应用程序时,往往也是把整个程序划分成若干个功能较为单一的程序模块,然后分别予以实现,最后再把所有的程序模块象达积木一样装配起来,这种在程序设计中分而治之的策略,被称为模块化程序设计方法。 使用函数,不仅可以实现程序的模块化,程序设计得简单和直观,提高了程序的易读性和可维护性。,一个

2、较大的程序可分为若干个程序模块,每一个模块用来实现一个特定的功能。在高级语言中用子程序实现模块的功能。子程序由函数来完成。 函数间的调用关系:由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。,函数概述,函数的概念,函数其实就是一段可以重复调用的、功能相对独立完整的程序段。,C是函数式语言必须有且只能有一个名为main的主函数C程序的执行总是从main函数开始,在main中结束函数不能嵌套定义,可以嵌套调用 函数必须先定义,后使用。,函数的分类从用户的观点分为:C编译系统提供的标准库函数和用户自定义函数;从函数间数据传送的关系分为:有参函数、无参函数、有

3、返回值函数、无返回值函数;从函数的调用分为:内部函数和外部函数。,函数的定义,一般格式,合法标识符,函数返回值类型 缺省int型 无返回值void,函数体,各参数之间用逗号间隔;在进行函数调用时,主调函数将赋予这些形式参数实际的值;形参是变量,必须在形参表中给出形参的类型说明。,函数定义的一般形式,一般格式,例 无参函数 void printstar( ) printf(“*n”); ,函数定义的一般形式举例:,(1) float sum ( x , y ) float x , y ; int z ;z = x + y ; return z ;,(2) float sum (float x,

4、float y ) int z ;z = x + y ; return z ;,函数的分类与定义,函数定义的一般形式说明:,float sum (float x , float y ) int z ;z = x + y ; return z ;,类型说明符: 指明函数的类型,函数的类型是指函数的返回值的类型,函数返回值所具有的数据类型的种类与变量相同。省略时则默认为int型。若明确表示函数 “不带回值“,可以用 “ void “ 作类型符,称“无类型“或称“空类型“。,函数的分类与定义,float sum ( float x , float y ) int z ;z = x + y ; ret

5、urn z ;,函数名:通常是一个标识符,在一个程序中除了主函数外其余函数的名字可以任意取,但应有意义。“()“ 函数标志。,float sum ( float x , float y ) ,参数表( 形参表 ):函数定义时的参数称为形式参数,形式参数彼此间用逗号分隔。形式参数省略时称无参函数,但此时函数名后的圆括号不能省。形参说明是用来指明各个形式参数的类型,它随形参的存在而存在。,函数的分类与定义,float sum ( float x , float y ) int z ;z = x + y ; return z ;,函数体:函数中最外层一对花括弧“ “括起来的内容,它由若干个数据说明语

6、句和可执行语句组成,决定函数要实现的功能、完成的任务。函数体内若无任何语句时,为空函数。,形式参数和实际参数 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值、输入等办法使实参获得确定值。 实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。 若形参与实参类型不一致,自动按形参类型转换函数调用转换。,int func ( ) float f = 5;f = f / 2;return ( f ); ,函数将返回2,而不是2.5,例 编写自定义函数计算:,分析:确定形参:求 c

7、必须知道 f 的大小,设形参为temp。确定函数:函数的返回值即为 c 的值,设为实型。,程序:float ftoc( temp )float temp ; float c ; c =(5./9.)*( temp 32 ); return c ; ,#include int max (in t a, int b); /函数的原型声明 void main ( ) int a, b, c;scanf (“%d%d“, ,说明:实参与形参的个数相等、类型相同、顺序一致,呈一一对应的关系。实参的求值顺序不确定,与所用系统有关。实参应有确定的值。,函数名( 实参1,实参2,实参n ); 或 变量名 =

8、函数名( 实参1,实参2,实参n );,函数调用,函数调用的方式 函数语句: (函数调用的一般形式加上分号即构成函数语句) 函数表达式 函数参数,例 printstar();printf(“Hello,World!n”);,例 m=max(a,b)*2;,例 printf(“%d”,max(a,b);m=max(a,max(b,c);,函数调用的一般形式,自定义函数:float jiechen( int n ) float x, y ;for( x=y=1.0; x=n; x+)y *= x ;return y ; ,例 调用自定义函数求 n!,调用:void main( ) int n;fl

9、oat f ;printf(“Please input n:”);scanf(“%d”, ,例:说出下列程序的运行结果,fun2( int a, int b ) int c ; c=a*b%3 ; return c ; fun1( int a, int b ) int c ; a+=a ; b+=b ; c = fun2( a, b ) ; return c*c ; main ( ) int x=11, y=19 ;printf(“%dn“, fun1( x, y) ); ,程序运行结果: 4,函数调用的一般形式,函数的返回值:当被调用函数在完成一定的功能后,可以将处理的结果返回到调用函数。,

10、函数的返回值,返回语句 形式: return(表达式);或 return 表达式; 或 return; 功能:计算表达式的值,并返回给主调函数。 说明: 函数中可有多个return语句,但每次调用只能有一个return 语句被执行,因此只能返回一个函数值。 若无return语句,遇时,自动返回调用函数。,对于不需要提供返回值的函数可以直接用void作为函数类型定义,以表明此函数返回值为”无类型”或”空类型”。 void psch() printf(“Wuhan Universityn“); main() psch( ); ,void函数,函数的返回值,对被调用函数的说明,对被调用函数要求: 必

11、须是已存在的函数 库函数: #include 用户自定义函数: 函数类型说明函数声明 一般形式: 函数类型 函数名(形参类型 形参名, );或 函数类型 函数名( ); 作用:告诉编译系统函数类型、参数个数及类型,以便检验 函数定义与函数说明不同 函数说明位置:程序的数据说明部分(函数内或外) 下列情况下,可不作函数说明若函数返值是char或int型,系统自动按int型处理被调用函数定义出现在主调函数之前 有些系统(如VC)要求函数说明指出函数返值类型和形参类型,并且对void 和 int 型函数也要进行函数说明,# include void main() float add(float x,

12、 float y); *对被调用函数add的声明*float a,b,c;scanf(f,f,a,b);cadd(a,b);printf(sum is f n“,c); float add(float ,float ) *函数首部* float ; /* 函数体 */z+;return(z);,运行情况如下: 3.6, 6.5 Sum is 10.100000,例 判定素数。,#include “math.h“ int isprime( int ); /* 函数原型声明*/ main( ) int x=35; if ( isprime(x) printf(“%d 是素数。n“, x );els

13、e printf(“%d 不是素数。n“, x ); isprime( int a ) int i;for ( i=2 ; i=sqrt(a); i+ )if ( a%i = 0) return 0 ;return 1 ; ,对被调用函数的说明,数组名可做实参和形参,传送的是整个数组。 在用数组名做函数参数时,实参和形参都应该用数组(或指针变量)。,数组作为函数的参数,数组作为函数的参数,有一个一维数组score,内放10个学生成绩,求平均成绩。 #include void main() float average(float array10); /* 函数声明 */float score10

14、 , aver;int ;printf(input 10 scores:n);for( i=0; i10; i+ )scanf(,score);printf(n);averaverage( score );printf ( average score is .n, aver); ,float average (float array10) int ;float aver,sum=array0;for (i=1;i10;i+)sum=sum+arrayi;aver=sum/10;return(aver); ,运行情况如下: input scores:100 56 78 98.5 76 87 99 67.5 75 97 average score is 83.40,数组名作函数参数时应注意:,1)数组名作函数参数时,应在主调函数和被调函数中分别定义数组。 2)实参数组与形参数组的类型必须相同,但大小可以不同。 3)形参数组的一维下标可以省略。 4)数组名表示的是数组元素的首地址,数组名作函数参数时,传递的是整个数组。实参与形参之间的数据传递是地址传递。,数组作为函数的参数,例 数组排序-冒泡排序,

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

当前位置:首页 > 中等教育 > 体育理论

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报