




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
一个较大程序可分为若干个程序模块,每一个模块用来实现一个特定功效。在高级语言中用子程序实现模块功效。子程序由函数来完成。一个C程序可由一个主函数和若干个其它函数组成。#include<stdio.h> voidmain() {voidprintstar();/*对printstar函数申明*/ voidprint_message();/*对print_message函数申明*/ printstar();/*调用printstar函数*/ print_message();/*调用print_message函数*/ printstar();/*调用printstar函数*/ }#include<stdio.h> voidmain() { intmax(intx,inty);/*对max函数申明*/ inta,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf(“maxis%d",c); }说明: 一、1.系统函数(库函数)需要在程序前包含头文件 2.用户自己定义函数 二、1.有返回值函数(注意返回值类型) 2.无返回值函数(函数类型应定义为空类型void)4.2.2函数定义2.有参函数定义普通形式3.空函数函数参数和函数值#include<stdio.h> voidmain() { intmax(intx,inty);/*对max函数申明*/ inta,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf(“maxis%d",c); }经过函数调用,使两个函数中数据发生联络关于形参加实参说明:(3)在被定义函数中,必须指定形参类型(见例2 程序中“c=max(a,b);”)。(5)在C语言中,实参向对形参数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不一样单元。图一4.3函数返回值假如需要从被调用函数带回一个函数值供主调函数使用,被调用函数中必须包含return语句。假如不需要从被调用函数带回函数值能够不要return语句。return后面值能够是一个表示式。 比如,例2中函数max能够改写成:比如:下面是3个函数首行: intmax(floatx,floaty)/*函数值为整型*/ charletter(charc1,charc2)/*函数值为字符型*/ doublemin(intx,inty)/*函数值为双精度型*/(3)在定义函数时指定函数类型普通应该和return语句中表示式类型一致。例3返回值类型与函数类型不一样4.3函数调用例4实参求值次序假如按自左至右次序求实参值,则函数调用相当于f(2,3)4.3.2函数调用方式3.函数参数 函数调用作为一个函数实参。比如: m=max(a,max(b,c)); 其中max(b,c)是一次函数调用,它值作为max另一次调用实参。m值是a、b、c三者中最大者。又如:printf("%d",max(a,b));也是把max(a,b)作为printf函数一个参数。 函数调用作为函数参数,实质上也是函数表示式形式调用一个,因为函数参数原来就要求是表示式形式。4.3.3对被调用函数申明和函数原型函数原型普通形式为 (1)函数类型函数名(参数类型1,参数类型2……); (2)函数类型函数名(参数类型1,参数名1,参数类型2,参数名2……);#include<stdio.h> voidmain() {intmax(float,float);函数原型申明 floata,b; intc; scanf("%f,%f,",&a,&b); c=max(a,b); printf(“maxis%d\n",c); } intmax(floatx,floaty) {floatz;/*z为实型变量*/ z=x>y?x∶y; return(z); }#include<stdio.h> voidmain() {floatadd(floatx,floaty); /*对被调用函数add申明*/ floata,b,c; scanf("%f,%f",&a,&b); c=add(a,b); printf("sumis%f\n",c); } floatadd(floatx,floaty)/*函数首部*/ {floatz;/*函数体*/ z=x+y; return(z); }改写例54.4函数嵌套调用嵌套调用函数执行情况如图所表示 4.5函数递归调用(1)递推:从一个已知事实出发,按一定规律推出下一个事 实。用同一个变量存放推出结果,给同一个变量赋新值 n!=1*2*3*…*(n-2)*(n-1)*n i123…n初值:n=1 mm=m*im=1 程序段为:m=1; for(i=

王子****青蛙
实名认证
内容提供者


最近下载