C语言培训教材课件第五章.ppt
文本预览下载声明
第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,
显示全部