第六章函数 ■函数的基本使用 ■函数的嵌套调用 函数的递归调用 ■变量存储特征 宏
第 六 章 函 数 n 函数的基本使用 n 函数的嵌套调用 n 函数的递归调用 n 变量存储特征 n 宏
函数的概念 n!+m! for(=1;i<=n;i++) f=f*i scanf( %d%d%d,&m,&n,&k) fk= 1 for(=1;i=k;计++) fK=代k* for(=1;i<=m;++) 反复使用的代码段 fn= for(=1;i=n;i++) printf(%fn", fm/(fn+k))
函数的概念 k! n!+m! f=1; for(i=1; i<=n; i++) f=f*i; scanf("%d%d%d" , &m, &n, &k); fk=1; for(i=1; i<=k; i++) fk = fk*i; fm=1; for(i=1; i<=m; i++) fm = fm*i; fn=1; for(i=1; i<=n; i++) fn = fn*i; printf("%f\n" , fm/(fn+fk)); 反复使用的代码段
include include void maino void maino int k. mn int k. m n float fk fm fn float fk. fm. fn float fact(int n scanf("%d%d%d,&m,&n, &k) scanf("%d%d%d",&m, &n, &k) fke fm=fact(m) for(i=1; k<=k; i++) fn= fact(n) fk= fk fk= fact(k) fm=1: printf(%f\", fm/(fn+fk)) for(=1;i<=m;i+) fm fm*i float fact(int n fn=1 for(i=1; i<=n; i++) float f=1 fn= fn*i printf( %f\n", fm/(fn+fk)) for(i=1;i<≡n;i++) return f
# include void main() { int k, m, n; float fk, fm, fn; scanf("%d%d%d" , &m, &n, &k); fk=1; for(i=1; i void main() { int k, m, n; float fk, fm, fn; float fact(int n); scanf("%d%d%d" , &m, &n, &k); fm = fact(m); fn = fact(n); fk = fact(k); printf("%f\n" , fm/(fn+fk)); } float fact(int n) { int i; float f=1; for(i=1; i<=n; i++) f=f*i; return f; }
include void maino a∽ ink. m. n float fk, fm fn float fact(int n) scanf fact print scanf(%d%d%d",&m, &n,&k) fm =fact(m) 库函数自定义函数库函数 fn= fact(n 调用 fk= fact(k) printf( %f\n", fm/(fn+fk) ai主调函 float fact(int n) 定义 float f=1 for(=1;i≤≡n;i++) fact被调用函 f=fi 数 return f
# include void main() { int k, m, n; float fk, fm, fn; float fact(int n); scanf("%d%d%d" , &m, &n, &k); fm = fact(m); fn = fact(n); fk = fact(k); printf("%f\n" , fm/(fn+fk)); } float fact(int n) { int i; float f=1; for(i=1; i<=n; i++) f=f*i; return f; } main scanf print f fact 库函数 自定义函数 库函数 main 主调函 数 fact 被调用函 数 调用 定义
函数的概念 库函数 scant printf sqr(0 ■功能独立,反复使用的代码段 计算阶乘 factO ■模块化编程 学生成绩档案管理软件 成绩输入成绩修改成绩统计成绩打印
函数的概念 n 库函数 scanf() printf() sqrt() n 功能独立,反复使用的代码段 计算阶乘 fact() n 模块化编程 学生成绩档案管理软件 ┌─────┬─┴──┬────┐ 成绩输入 成绩修改 成绩统计 成绩打印
i include void maino Int in printf( 1 INPUT 2. EDIT 3 PROCESS 4. PRINT 5.EXITIn) while(1) printf("please input 1-5: scanf( %d", &in) if (in==5) break switch(int case 1: input(;break; case 2: edit(; break; case 3: process(); break; case 4: print(; break;
# include void main() { int in; printf("1. INPUT 2.EDIT 3. PROCESS 4.PRINT 5.EXIT\n"); while(1){ printf("please input 1-5:"); scanf("%d" ,&in); if (in==5) break; switch(in) { case 1: input( ); break; case 2: edit( ); break; case 3: process( ); break; case 4: print( ); break; } } }
void input()/成绩输入* void ed()∧*成绩修改* 4个函数的定义 void process()/*成绩统计 void print()/*成绩打印
void input( ) /* .成绩输入 */ { ............... } void edit( ) /* 成绩修改 */ { .............. } 4个函数的定义 void process( ) /* 成绩统计 */ { ............... } void print( ) /* 成绩打印 */ { ............... }
函数的定义和调用 void maino float fact(int n) i int i; int m, n float f=1 float fk. fm. fn float fact(int n) for(i=1; is=n; i++) f=代i fm=fact(6) return f 调用 定义
函数的定义和调用 void main() { int m, n; float fk, fm, fn; float fact(int n); fm = fact(6); …… } 调用 定义 float fact(int n) { int i; float f=1; for(i=1; i<=n; i++) f=f*i; return f; }
函数的定义和调用 void maino int m, n, float fk. fm. fn float fact(int n) fm=fact(6);调用 函数名(实际参数表) 参数传递 float fact(int n)定义 float f=1 返回值类型函数名(形式参数表) for(i=1; k<=n; i++) return f
函数的定义和调用 返回值类型 函数名(形式参数表) { …… } void main() { int m, n; float fk, fm, fn; float fact(int n); fm = fact(6); …… } float fact(int n) { int i; float f=1; for(i=1; i<=n; i++) f=f*i; return f; } 调用 定义 函数名(实际参数表) 参数传递
函数的参数 void maino 函数名(实际参数表) int m. n 返回值类型函数名(形式参数表) float fk. fm. fn float fact(int n) fm= fact(6) 1、函数的参数 float fact(int n m形式参数 类型1参数1,类型2参数2,…型n参数n float f=1 定义函数时需要知道的信息 for(=1;i形参
返回值类型 函数名(形式参数表) { …… } void main() { int m, n; float fk, fm, fn; float fact(int n); fm = fact(6); …… } float fact(int n) { int i; float f=1; for(i=1; i 形参 函数的参数 函数名(实际参数表)