当前位置:文档之家› 自定义过程和函数

自定义过程和函数

自定义过程和函数
自定义过程和函数

[课题]:自定义过程、函数与子程序

[目的要求]:了解子程序、自定义过程与函数,掌握自定义过程与函数的格式、参数、调用,通过实例领会自定义过程与函数的编写。了解有关形参与实参的概念,掌握调用过程与函数时参数的传递

[重点]:过程与函数的格式、参数、调用;过程与函数的编写;参数的传递。[难点]:解决问题能力的培养和提高。

[学时]:4学时

[教学过程及内容]:

导入:程序设计时,将一个大的程序按功能分解成若干相对独立的模块,一个模块用来完成一个特定的任务。由其它模块调用的、完成某种特定功能的独立程序,叫做子程序或过程、函数。例如求8!+6!+9!的和。如果我们把求阶乘的程序写成一个子程序或过程或函数,那么在执行时只是参数不同罢了。这样就大大地简化了我们的程序。今天我们一起来了解有关于子程序、过程、函数的有关内容。

新授内容:

一、子程序

概念:子程序实质上是一个程序文件。

1、建立:modi comm 子程序名

2、格式:与程序一样

3、调用:do 子程序名 [WITH 参数]

4、例:求8!+6!+9!的和

&&main.prg JC.PRG

SET TALK OFF SET TALK OFF

CLEAR CLEAR

S=0 P=1

N=8 FOR I=1 TO N

DO JC P=P*I

N=6 ENDFOR

DO JC S=S+P

N=9 RETURN

DO JC

?S

RETURN

&&MAIN.PRG JC.RPG

SET TALK OFF PARAMETERS N

CLEAR P=1

S=0 FOR I=1 TO N

DO JC WITH 8 P=P*I

DO JC WITH 6 ENDFOR

DO JC WITH 9 S=S+P

?S RETURN

RETURN

二、自定义过程

概念:由procedure开头,endproc结尾一段代码,我们称之为过程。

1、格式:

PROCEDURE 过程名

[LPARAMETERS 参数列表]

过程体

[RETURN [TO MASTER|TO 程序名]]

ENDPROC

2、例

CLEAR

S=0

DO JC WHIT 8

DO JC WITH 6

DO JC WITH 9

?“8!+6!+9!的和为:”

??S

RETURN

PROCEDURE JC

LPARAMETERS X

P=1

FOR I=1 TO X

P=P*I

ENDFOR

S=S+P

ENDPROC

3、说明:(1)过程名的定义同变量命名规则

(2)参数用于接受从调用语句传过来的值(do jc with 6),各参数间用“,”分隔。

(3)RETURN语名控制返回,RETURN TO MASTER表示返回最上层,RETURN TO 程序名,则返回指定的程序。若只有RETURN,则返回调用语句所在程序。若无RETURN,则默认为RETURN。

(4) 其即可与调用语句存放在一个程序文件中(必须位于程序的后面),也可以放在其他程序文件中。

4、过程调用:

(1)与调用语句在一个程序文件中,直接用:do 过程名 [with 参数列表]

(2)与调用语句不在一个程序文件中,则用:DO 过程名 IN 程序文件名[WITH 参数列表]。或先用SET PROCEDURE TO 程序文件名 [ADDITIVE] 命令指定过程所在的文件,然后用:do 过程名 [with 参数列表] 调用。

5、例:分别求半径为5、8、6的周长和面积

**MAIN.PRG

CLEAR

SET PROCEDURE TO SUB

DO ZCMJ WITH 5

DO ZCMJ WITH 8

DO ZCMJ WITH 6

SET PROCEDURE TO

RETURN

**SUB.PRG

PROCEDURE ZCMJ

LPARAMETERS R

?”周长为:”,3.14*2*R

?”面积为:”,3.15*R*R

ENDPROC

**main.PRG

CLEAR

DO ZCMJ IN SUB WITH 5

DO ZCMJ IN SUB WITH 8

DO ZCMJ IN SUB WITH 6

RETURN

6、练习:分别求8!、5!、10!

7、再例:分别判断99、111、999是不是素数

CLEAR

DO SS WITH 99

DO SS WITH 111

DO SS WITH 999

RETURN

PROCEDURE SS

LPARAMETERS X

T=.T.

FOR I=1 TO INT(SQRT(X))

IF MOD(X,I)=0

T=.F.

EXIT

ENDIF

ENDFOR

IF T

?STR(X,4)+”是素数”

ELSE

? STR(X,4)+”不是素数”

ENDIF

ENDPROC

二、自定义函数

概念:由FUNCTION开头,ENDFUNC结尾的一段代码,我们称之函数1、格式:

FUNCTION 函数名 [参数列表]

函数体

[RETURN 返回值]

ENDFUNC

FUNCTION 函数名

[LPARAMTERS 参数列表]

函数体

[RETURN 返回值]

ENDFUNC

2、例:

CLEAR

?“8!+6!+9!的和为:”

??JC(8)+JC(6)+JC(9)

RETURN

FUNCTION JC(X)

S=1

FOR I=1 TO X

S=S*I

ENDFOR

RETURN S

ENDFUNC

3、说明:(1)函数名的定义同变量命名规则

(2)参数用于接受从调用语句传过来的值(jc(8)),各参数间用“,”分隔。

(3)RETURN语名用于返回结果。

(4) 其即可与调用语句存放在一个程序文件中(必须位于程序的后面),也可以放在其他程序文件中。

4、函数调用:

(1)与调用语句在一个程序文件中,直接用:函数名(参数)

(2)与调用语句不在一个程序文件中,则必须先用SET PROCEDURE TO 程序文件名 [ADDITIVE] 命令指定函数所在的文件,然后用:函数名(参数)调用。

5、例:从键盘输入一个正整数,然后将其转换成二进制数、八进制数

CLEAR

INPUT “请输入一个正整数:” to N

?”转换成二制数为:”+jz(n,2)

?”转换成八制数为:”+jz(n,8)

RETURN

FUNCTION JZ

LPARAMETERS X,R

Y=“”

DO WHILE X!=0

P=MOD(X,R)

Y=STR(P,1)+Y

X=INT(X/R)

ENDDO

RETURN Y

ENDFUNC

6、课堂练习:分别求21、35、20的二制数

7、再例:证明歌德巴赫猜想:即每个偶数均可分解为两个素数之和。如6=3+3,10=3+7,有多种情况的只求一种。现断判6~100之间的偶数CLEAR

FOR I=6 TO 100 STEP 2

FOR J=3 TO I-3 STEP 2

IF SS(J)

IF(I-J)

?I,J,I-J

EXIT

ENDIF

ENDIF

ENDFOR

ENDFOR

RETURN

FUNCTION SS(N)

FOR L=2 TO INT(SQRT(N))

IF MOD(N,L)=0

RETURN .T.

ENDIF

ENDFOR

RETURN .T.

ENDFUNC

四、参数的传递

<一>参数的类型

1、形参:定义过程和函数时所指定的参数。

2、实参:调用过程和函数时所给出的参数

3、参数的要求:调用时实参的个数必须等于或少于形参的个数,当实参的个数少于形参的个数时,则其它的形参的值为.F.。

<二>参数的传递

1、按值传递:将实数的值传给形参。当按值传递时,若在过程和函数中改变了形参的值,其不会影响实参的值。

例:DO JC WITH 8

DO JC WITH (N)

Ss((n))

2、引用传递:将实数的地址传给形参,又称按地址传递。当地址传递时,若在过程和函数中改变了形参的值,将会影响实参的值。

例:DO JC WITH N

SS(N)或ss(@n)

3、SET UDFPARMS TO VALUE | REFERENCE

作用:在向自定义函数传递参数时,确定变量是按值传递,还是按地址传递。

说明:SET UDFPARMS TO V ALUE为按值传递

SET UDFPARMS TO REFERENCE为按地址传递

注:()和@优先于SET UDFPARMS TO命令。在调用过程时,变量始终为按地址传递。

4、例:

SET TALK OFF

CLEAR

n=5

sub(n)

?n

SET UDFPARMS TO VALUE

n=6

sub(n)

?n

n=7

sub(@n )

?n

SET UDFPARMS TO REFERENCE

n=8

sub(n)

?n

n=9

sub((n))

?n

RETURN

func sub

LPARAMETERS x

x=x+10

?x

ENDfunc

[小结]

1、过程、函数的格式、调用语句

2、过程、函数的编写

[作业]

1、分别用过程、函数求11~99之间的逆向素数,即将一个素数的个位和十位互换,如果仍然为素数,则称为逆向素数。

2、分别用过程、函数求2!+4!+8!的和。

3、分别用过程、函数求[100,9999]之内超级素数,即一个素数称之为超级素数,若该素数依次去掉个位,十位,...等等,每次所得的数仍然是素数。例如239就是超级素数。

4、分别求26和36、32和63的最小公倍数

C语言 第七章 函数

第七章函数 一、选择题 1.【B】 分析:函数返回值的隐含类型是整型。 2.【B】 分析:main函数可以在任何地方出现。它是程序的入口。 3.【D】 分析:函数的调用有一个返回值或者实现一定的功能,因此可以作为独立的语句存在,也可以出现在表达式中,可以作为一个函数的实参(返回值是一个实际的值)。4.【B】 分析:实参与形参之间的数据传递,只能是实参传给形参,单向传递。 5.【B】 分析:任何函数(除了main函数)的使用通过调用实现。普能的函数都能被单独编译(一定要能过调用才能运行),不能在一个函数中嵌套定义另一个函数。 6.【CD】 分析:C选项程序就是由若干个函数组成,无论是否有其他函数,主函数一定得存在。每个程序都必须有且仅有一个主函数,但不是每个程序文件都必须有main()函数。因为一个程序可能包含多个程序文件。函数不能嵌套定义。 7.【D】 分析:函数调用时实参必须与形参在个数,类型,顺序上相同。A选项中的"abc"是字符串,所以错误。C选项中'65'本身就是错误的。函数的返回值为空,不能用于赋值运算,所以B选项错误。D选项的第二个32在传给形参时可以转换为实型,正确。8.【A】 分析:实参都是用逗号隔开,第二个实参是个加法表达式,第三个实参是个逗号表达式。9.【C】 分析:fl函数功能返回较大的值,f2函数的功能返回较小的值。f1(a,b)返回为4,f2(a,b)返回为3。 10.【C】 分析:void *fun();的含义是fun函数的返回值是无值型的指针类型。 11.【C】 分析:函数在调用时不会出现类型说明符,所以A,D错误。函数的返回值为空,不能用于赋值运算,所以B选项错误。 12.【D】 分析:fun函数的功能选择两个数中较大的一个作为返回值。x为3,y为8,z为6以实参传到形参中,所以fun(fun(x,y), 2*z)等价于fun(fun(3,8), 2*6)等价于fun(8, 12),最后r被赋12。答案选D。 13.【B】 分析:fun函数功能返回两个数之和。此题就是函数调用作为函数实参。a为2,b为5,c 为8传到fun((int)fun(a+c,b),a-c))中那么它等价于fun(15,-6)。所以答案选B。14.【C】 分析:此题关键的一点就是实参与形参数据是单向传递的,a为31以实参传到函数中或者说传到形参z中,而函数体z=x*x+y*y会使z发生改变,形参改变了,但是实参是不

C++第七章 动态内存分配习题解答

第七章动态内存分配习题 一、基本概念与基础知识自测题 7.1 填空题 7.1.1 C/C++定义了4个内存区间:(1)、(2)、(3)和(4)。 答案:(1)代码区,存放程序代码; (2)全局变量与静态变量区,存放全局变量或对象(包括静态); (3)局部变量区即栈(stack)区,存放局部变量; (4)动态存储区,即堆(heap)区或自由存储区(free store)。 7.1.2 静态定义的变量和对象用标识符命名,称为(1);而动态建立的称为(2),动 态建立对象的初始化是通过(3)来(4)。 答案:(1)命名对象 (2)无名对象 (3)初始化式(initializer) (4)显式初始化 7.1.4 当动态分配失败,系统采用(1)来表示发生了异常。如果new返回的指针丢失, 则所分配的堆空间无法收回,称为(2)。这部分空间必须在(3)才能找回,这是因为无名对象的生命期(4)。 答案:(1)返回一个空指针(NULL) (2)内存泄漏 (3)重新启动计算机后 (4)并不依赖于建立它的作用域 7.1.5 按语义的缺省的构造函数和拷贝构造赋值操作符实现的拷贝称(1),假设类对象 obj中有一个数据成员为指针,并为这个指针动态分配一个堆对象,如用obj1按成员语义拷贝了一个对象obj2,则obj2对应指针指向(2)。 答案:(1)浅拷贝 (2)同一个堆对象 7.2简答题(以下习题题号可能和教材不一致!) 7.2.1用delete删除p所指向的无名对象时,p指针也同时被删除了,对不对?为什么?答:不对。注意这时释放了p所指向的无名对象占用的内存空间,也就是撤销了该无名对象,称动态内存释放(dynamic memory deallocation),但指针p本身并没有撤销,它仍然存在,该指针所占内存空间并未释放。 7.2.2为什么动态建立类对象数组时,类的定义一定要有缺省的构造函数? 答:new后面类(class)类型也可以有参数。这些参数即构造函数的参数。但对创建数组,没有参数,只能调用缺省的构造函数。 7.2.3要实现深拷贝,自定义的拷贝构造函数应该怎样设计? 答:如果类中有一个数据成员为指针,该类的一个对象中的这个指针p,指向了动态分配的一个堆对象。深拷贝时要给新建立的对象独立分配一个堆对象。这时拷贝的构造函数应

答案第七章函数..(可编辑修改word版)

第七章函数 一、选择题 1.以下函数声明正确的是: C 。(02~03 第一学期试题) A)double fun(int x, int y) B) double fun(int x; int y) C) double fun(int x, int y) ; D) double fun(int x , y) 2.C 语言规定,简单变量作实参,它与对应形参之间的数据传递方式是: B 。(0 级) A)地址传递;B)单向值传递; C)双向值传递;D)由用户指定传递方式 3.以下关于C语言程序中函数的说法正确的是: B 。(0 级) A)函数的定义可以嵌套,但函数的调用不可以嵌套; B)函数的定义不可以嵌套,但函数的调用可以嵌套; C)函数的定义和调用均不可以嵌套; D)函数的定义和点用都可以嵌套。 4.以下正确的函数形式是: D 。(1 级) A)double fun(int x,int y) B)fun (int x,y) {z=x+y;return z;} {int z;return z;} C)fun(x,y) D)double fun(int x,int y) {int x,y ; double z; {double z; z=x+y; return z;} z=x+y; return z;} 5.以下说法不正确的是: B 。(1 级) C 语言规定A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以是任意类型 D)形参应与其对应的实参类型一致 6.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 B 。(0 级) A)float 型B) int 型C)long 型D)double 型 7.以下错误的描述是 D 。(0 级) 函数调用可以 A)出现在执行语句中B)出现在一个表达式中C) 做为一个函数的实参D)做为一个函数的形参 8.若用数组名作为函数调用的实参,传递给形参的是 A 。(0 级) A)数组的首地址B)数组第一个元素的值 C)数组中全部元素的值D)数组元素的个数 9.以下正确的说法是 A 。(0 级) 如果在一个函数中的复合语句中定义了一个变量,则该变量 A)只在该复合语句中有效B)在该函数中有效C) 在本程序范围内有效D)为非法变量 10.以下不正确的说法为 D 。(0 级) A)在不同函数中可以使用相同名字的变量 B)形式参数是局部变量

第七章自定义函数

第七章自定义函数 7.1,概述 用户自定义函数(User-Defined Functions,即UDFs)可以提高FLUENT程序的标准计算功能。它是用C语言书写的,有两种执行方式:interpreted型和compiled型。Interpreted 型比较容易使用,但是可使用代码(C语言的函数等)和运行速度有限制。Compiled型运行速度快,而且也没有代码使用范围的限制,但使用略为繁琐。 我们可以用UDFs来定义: a)边界条件 b)源项 c)物性定义(除了比热外) d)表面和体积反应速率 e)用户自定义标量输运方程 f)离散相模型(例如体积力,拉力,源项等) g)代数滑流(algebraic slip)混合物模型(滑流速度和微粒尺寸) h)变量初始化 i)壁面热流量 j)使用用户自定义标量后处理 边界条件UDFs能够产生依赖于时间,位移和流场变量相关的边界条件。例如,我们可以定义依赖于流动时间的x方向的速度入口,或定义依赖于位置的温度边界。边界条件剖面UDFs用宏DEFINE_PROFILE定义。有关例子可以在5.1和6.1中找到。源项UDFs可以定义除了DO辐射模型之外的任意输运方程的源项。它用宏DEFINE_SOURCE定义。有关例子在5.2和6.2中可以找到。物性UDFs可用来定义物质的物理性质,除了比热之外,其它物性参数都可以定义。例如,我们可以定义依赖于温度的粘性系数。它用宏DEFINE_PROPERTY定义,相关例子在6.3中。反应速率UDFs用来定义表面或体积反应的反应速率,分别用宏DEFINE_SR_RATE和DEFINE_VR_RA TE定义,例子见6.4。离散相模型用宏DEFINE_DPM定义相关参数,见5.4。UDFs还可以对任意用户自定义标量的输运方程进行初始化,定义壁面热流量,或计算存贮变量值(用用户自定义标量或用户自定义内存量)使之用于后处理。相关的应用见于5.3,5.5,5.6和 5.7。 UDFs有着广泛的应用,本文并不能一一叙述。如果在使用中遇到问题,可以联系FLUENT技术支部门要求帮助。在此推荐一个网站,上面有FLUENT论坛,可进行相关询问和讨论。 7.1.1 书写UDFs的基本步骤 在使用UDFs处理FLUENT模型的过程中,我们一般按照下面五步进行: 1.概念上函数设计 2.使用C语言书写 3.编译调试C程序 4.执行UDF 5.分析与比较结果 第一步分析我们所处理的模型,目的是得到我们要书写的UDF的数学表达式。第二步将数学表达式转化成C语言源代码。第三步编译调试C语言源代码。第四步在FLUENT 中执行UDF。最后一步,将所得到的结果与我们要求的进行比较,如果不满足要求,则需要重复上面的步骤,直到与我们期望的吻合为止。

第七章 函数

函数 了解函数定义的方法 1.定义无参函数的一般形式为: 类型标识符函数名() { 声明部分 语句部分 } 2.定义有参函数的一般形式为: 类型标识符函数名(形式参数表列) { 声明部分 语句部分 } 例如: intmax(int x,int y) { intz; / *函数体中的声明部分*/ z=x>y?x∶y; return(z); } 3.定义空函数的一般形式为: 类型标识符函数名() {} 例如: dummy() {} 函数调用注意事项: (1)C程序的执行是从main函数开始的,如是在main函数中调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。 (2)所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一函数,即函数不能嵌套定义。函数间可以互相调用,但不能调用main函数。main函数是系统调用的。 (3) 在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。 (4)在定义函数时指定的函数类型一般应该与return语句中的表达式类型一致。 掌握函数的调用方式: 1.函数的嵌套调用 2.函数的递归调用 简单了解局部变量与全局变量 1.填空题 有以下程序

#include int fun(int a,int b) {int c; c=a+b;return c; } main() {int x=6,y=7,z=8,r; r=fun((x--,y++,x+y),z--); printf("%d,%d,%d",r,x,y); } 输出结果为___21,5,8___ 2.填空题 有以下程序 #include int fun2(int a,int b) {int c; c=(a*b)%3;return c; } int 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("%d\n",fun1(x,y)); } 输出结果为__4___ 3.填空题 有以下程序 #include void fun(int a,int b,int c) {a=b;b=c;c=a;} main() {int a=10,b=20,c=30; fun(a,b,c); printf("%d,%d,%d\n",c,b,a); } 运行结果是__30,20,10___(掌握值传递与址传递)4.填空题 有以下程序 #include char f(char x) {return x*x+'a';}

小甲鱼C语言第七章 函数

第七章函数 如果有人问你,这个地球上什么动物最聪明?我想不会有其他答案,这个地球上人类是最聪明的。我们去百度一下“人类”,会发现百度百科中是这样描述人类的:人的总称,是地球上一中相比较来说比较高智慧的生物,可以说是地球至今的统治者。《现代汉语词典》对人的解释是:能制造工具、并且能够熟练使用工具进行劳动的高等动物。 《现代汉语词典》中对人类的解释离不开“工具”这个词。我们人类的祖先在使用天然工具的过程中,逐渐学会了如何制造工具。工具是什么呢?工具往往具有某些特定的作用、可以实现某种功能。比如打火机,可以用于打火,当我们想抽烟的时候,只需要轻轻的按一下打火机就可以了,而不需要钻木取火,如果现在还有人钻木取火的话,除非那个人是想实验一下钻木取火的真实性,否则为了帮助这个社会,我们就可以打电话通知精神病院了。 工具简化了我们的生活,也丰富了我们的生活。当我们需要实现某种功能的时候,只需要把对应的工具拿过来使用就好了。C语言中也提供了这种使用某种“工具”来处理特定问题的方法,称之为函数。 7.1 函数概述 有些人在看到本章的标题的时候可能就会惊呼:我函数学的最差了!!我最讨厌函数了!!。没错,数学中的函数的确很讨厌(针对我个人来说),我也很不喜欢它。但是不要担心,这里不会讲数学中的函数,更不会告诉你一次函数和二次函数的差别。我们这里讲的是计算机语言中的函数。 函数,在有些语言当中也称为方法。要说计算机语言中的函数和数学中的函数完全不一样吗?其实也不然,在计算机语言当中,函数就是具有特定功能的“工具”。像我们目前使用过的printf函数和scanf函数,前者用于输出,后者用于输入。还有我们每次编写代码都会使用的main函数。只不过printf和scanf函数是C语言提供的,我们只需要会用就行了,而main函数的功能是我们自己编写的。 为了更好的理解函数的概念,我举个例子来说。日常生活中我们经常会用到ATM自动取款机,这是一个非常方便的工具,我们平常只需要把钱存在卡里,需要的时候可以24小时去取款机中取钱,我想大家都应该有过去取款机取钱的经历,回想一下这个过程:走到取款机面前,我们要把卡放进去,然后取款机会提示输入密码,密码正确之后,选择取款,然后输入取款金额,取款机会把相应的钱吐出来,随后将会提示你是否打印凭条,打印完之后点击取款机屏幕上的退出,便可以取回自己的银行卡。 取款机实现了“自动取款”这个功能,在使用这个功能的时候,我们首先需要把卡放进取款机里,而且还要输入正确的密码,当密码正确之后,我们使用取款这个功能取得相应的钱。最后这个功能完成了,打印一张凭条,打印了此次取款的记录,最后把卡退还给用户。 那么自动取款机就可以说是一个函数,它具有取钱、存钱、转账等等功能,而且我们不需要知道这种功能是如何实现的,我们只需要会使用就可以了。 我们在C语言中也使用函数来实现某种特定的功能。C语言中函数分为两类,一类是库函数,一类是自定义函数。C语言有着丰富的库函数,这个库函数又是个啥子东西?C语言的语句十分简单,如果要使用C语言的语句来完成printf()和scanf()的功能,就需要编写颇为复杂的程序,因为C语言的语句中没有提供可以用于输出或输入的语句。又如为了显示一段文字,或者输入一段文字,我们可以直接使用printf和scanf函数,可以直接用于输出和输入,我们不必去关心这两个函数是如何实现输出和输入功能的。但是,C语言是不可

第七章函数分类

一、函数分类 1、主函数main() { } 2、库函数scanf printf getchar putchar sqrt pow(x,y) fabs 只知道功能是什么就可以,不用具体的了解内部结构。#include “math.h” #include “ctype.h”字符函数 #include “string.h”字符串函数 #include “stdio.h”输入输出函数 #include “stdlib.h”动态分配和随机函数 3、自定义函数 用户根据自己的需要定义的函数,称为自定义函数,具体功能是完成一个操作/计算。 C程序的基本组成单位是函数。 一个可以执行程序,可以由多个函数组成,不管有多少的函数,总是从主函数开始执行,在主函数结束程序。 double sum(double x,double y) {double z;

z=x+y; return z;} main() {double a,b,c; scanf(“%lf%lf”,&a,&b);3.4 5.9 c=sum(a,b); printf(“%lf”,c); } 二、自定义函数的定义 1、格式: 函数返回值的类型函数名(类型名形式参数1,类型名形式参数2,……..) 函数首部{定义部分 执行部分 } 函数体 int sum(int x,int y)形式参数 {int z; z=x+y; return z;} 说明:1)函数返回值的类型int(可以省略) float double char void(无值型) 2) 函数名是用户根据自己的需要定义的名字,见名知义.

3)( )不能省略,可以为空.为形式参数.个数应该和实际参数个一致.类型一致. 4){}为函数体,定义部分和执行部分. void fun(int x,int y) {if(x>y) return x; else return y; } main() {int x,y; scanf(“%d%d”,&x,&y); printf(“%d”, fun(x,y);); } 三、函数的调用 格式1:函数做为表达式的一部分出现. max=fun(x,y); printf(“%d ”, fun(x,y)); 格式2:函数做为一条独立语句出现. printf(“%d ”,a); 四、函数的返回值 格式: 1) return 表达式

相关主题
文本预览
相关文档 最新文档