文档详情

C语言培训教材课件第五章.ppt

发布:2017-04-21约2.94千字共51页下载文档
文本预览下载声明
第5章 函 数;主要内容;5.1 概述;【例5.1】求一个整数的立方。;⑴ 一个C源程序可以由一个或多个源程序文件组成。C编译系统在对C源程序进行编译时是以文件为单位进行的。 ⑵ 一个C源程序文件可以由一个或多个函数组成。所有函数都是独立的。主函数可以调用其它函数,其它函数可以相互调用。 ⑶ 在一个C程序中,有且仅有一个主函数main。C程序的执行总是从main函数开始,调用其它函数后最终回到main函数,在main函数中结束整个程序的运行。;⑷ 函数的种类;【例5.2】无参函数的定义与调用。;5.2.1 函数的定义;int max(x,y) int x,y; { int z; z = x y ? x : y; return( z ); };函数名(实参表列);int sum100( ) { int i,t=0; for (i=1; i=100; i++) t+=i; return (t);} main( ) { int s; s=sum100( ); printf(%d\n, s); };void swap(int x, int y) { int z; z=x; x=y; y=z; printf(\nx=%d,y=%d,x ,y); } main( ) { int a= 10,b=20; swap(a,b); printf(\na=%d,b=%d\n,a,b); };有关形参和实参的说明: ;【例5.5】函数调用中实参的求值顺序。;2.函数的类型与函数的返回值;函数的返回值是通过return语句带回到主调函数的;【例5.8】计算并输出圆的面积。; ;对被调函数进行声明的一般形式;main( ) { void calc(float x,float y,char opr); float a,b; char opr; printf(\nInput expression:); scanf(%f%c%f,a,opr,b); calc(a,b,opr); } void calc(float x,float y,char opr) { switch(opr) { case +:printf(%5.2f%c%5.2f=%6.2f\n,x,opr,y,x+y);return; case -:printf(%5.2f%c%5.2f=%6.2f\n,x,opr,y,x-y);return; case *:printf(%5.2f%c%5.2f=%6.2f\n,x,opr,y,x*y);return; case /:printf(%5.2f%c%5.2f=%6.2f\n,x,opr,y,x/y);return; default :printf(Operator err! \n); } };5.3 数组作函数参数;5.3.2 一维数组名作函数参数;void sort(int b[ ],int n); void printarr(int b[ ]); main( ) { int a[10] = {11,22,63,97,58,80,45, 32,73,36}; printf(Before sort:\n); printarr(a); sort(a,10); printf(After sort:\n); printarr(a); }; ; #include stdio.h main( ) { void scat(char str1[ ],char str2[ ]); char s1[50],s2[50]; int i,k; printf(Input s1:); gets(s1); printf(Input s2:); gets(s2); scat(s1,s2); printf(Output s1:%s\n,s1); printf(Output s2:%s\n,s2); };5.4 函数的嵌套调用和递归调用;【例5.15】函数的嵌套调用;5.4.2 函数的递归调用;2.递归函数的执行过程;程序如下:;递归调用过程;3.编制递归函数的方法;程序如下:;5.5 局部变量和全局变量及其作用域;void sub(int a,int b) { int c; a=a+b; b=b+a; c=b-a; printf(sub:\ta=%d b= %d c= %d\n,a,b,c); };5.5.3 全局变量及其作用域;int a = 5; void f(int x,
显示全部
相似文档