如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
C语言程序设计教学做一体化主编滕泓虬中国水利水电出版社模块七函数与预处理main()f1()f2()f3()f11()f12()f21()f22()f23()f31()f32()f211()f311()[实例7_1]一个简单的函数调用的例子。main(){print_message();/*调用print_message函数*/}voidprint_message()/*print_message函数*/{printf(“howdoyoudo!\n”);}运行结果如下:print_message()是用户自定义的函数名,用来输出一行信息。函数可分为两种:A)从用户角度来看:(1)库函数。这是由系统提供的,用户不必自己定义这些函数,可以直接使用它们。每个系统提供的库函数的数量和功能不同。(2)用户自己定义的函数,以解决用户的专门需要。7.1函数的定义函数定义的一般形式:若定义无参函数,则形式参数表列为空,但函数名后的小括号却不能省略。无参函数一般没有返回值,因此函数类型可用void说明函数无返回值。7.2函数的调用二、函数调用的方式:1.函数语句:由函数调用加上分号构成,在主调函数中可作为一个独立的语句。如:stars(20);print_message();2.函数表达式:函数调用作为一个运算对象出现在表达式中,此时要求函数带回一个确定的值以参加表达式的运算。如:c=max(a,b);3.函数参数:函数调用作为另一个函数的实参,其值作为一个实际参数传给被调函数的形参进行处理,此时也要求函数带回一个确定值。如:m=max(a,max(b,c));printf("%d",max(a,b));实例7_2一个带参函数调用的例子。实例分析:(1)本实例有两个函数,一个是main(),另一个是print_message(),在main函数中调用了print_message函数,因此,main函数称为主调函数,print_message函数称为被调函数。(2)本例中被调函数print_message是放在主调函数main之前,故不需要加上声明语句。在实例7_1中,被调函数是位于主调函数之后,因此在调用之前要加上了函数的声明语句(被调函数的返回类型是int时除外),否则编译通不过。动手实践:将本实例中的main函数和print_message函数位置对调,看看编译能否通过,出现什么错误提示信息?7.3函数调用中的参数在调用函数时,大多数情况下,主调函数和被调用函数之间有数据传递关系。这就是前面提到的有参函数。实例7_3定义一函数add()求两个数之和。/*定义add()函数*/intadd(intx,inty)/*x和y称为形参(即在定义一个函数时用到的参数)*/{intz;z=x+y;return(z);/*将z的值返回给主调用函数的调用处*/}main()/*main()为主调函数*/{inta,b,c;printf("Inputaandb:\n");scanf("%d%d,",&a,&b);c=add(a,b);/*a和b称为实参(即在调用函数时真正用到的变量)*/printf("sumis%d",c);getch();}实例分析:(1)add()是被调函数,在定义add函数时,出现在add函数名小括号内的参数x,y是形式参数,简称形参。形参即使它们的类型相同也要分别声明其类型。如:(intx,inty),而不能写成(intx,y)。(2)在主调函数main()中,定义了三个变量a、b、c,其中a、b出现在函数调用语句add(a,b)中,称为实际参数,简称实参。函数调用时将实参传给形参,形参获得值后执行被调用函数体语句z=x+y;求两个数的和,遇到return语句时,把return后面的表达式返回给被调函数调用处,即c=add(a,b),此时实际是将z的值赋给了变量c。3)在主调函数main()中输出和。当然,本实例若改为只定义一个main函数,在main函数中直接求a、b的和,输出,结果是一样的。这里是给出一个函数调用的基本使用格式。当程序的功能比较复杂或需重复用到相同的代码时,函数调用就变得非常必要。7.3.2数组作为函数调用中的参数一、数组元素做函数实参程序如下:实例7_5数组元素做实参。voidchange(intx)/*形参x用来接收实参a[0]的值*/{x=x+100;/*将x的值加上100*/}main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;clrscr();printf("\nArrayabeforefunctioncallis