预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共72页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第5章函数5.1引言—模块化程序设计模块化程序设计典型函数分解命题检查命题检查(续1)命题检查(续2)命题检查(续3)命题检查(续4)命题检查(续5)命题检查(续6)命题检查(续7)C语言程序基本结构函数分类5.3函数定义函数定义普通格式函数定义普通格式(有参函数)函数参数5.5函数调用函数调用(举例)函数调用方式函数调用过程分析函数调用过程中参数传递方式input(void)/*函数返回值类型缺省,即为int*/ {intscore,max=0;/*阐明*/ printf("输入若干学生成绩(非法输入表示结束):\n"); scanf("%d",&score); while(score>=0&&score<=100){ if(score>max)max=score; scanf("%d",&score); } returnmax; }voidshow(void)/*函数无返回值*/ { if(rand()%3==0) return;/*中途提前结束函数执行*/ printf("Hello!\n"); return;/*可省略*/ }函数应用举例超级素数超级素数(续)5.7函数原型申明函数原型主要用途main函数原则形式5.9函数嵌套调用计算s=1k+2k+3k+……+Nk(函数嵌套调用)函数嵌套调用应用:用弦截法求方程f(x)=x3-5x2+16x-80=0根4.重复环节(2)和(3),直到|f(x)|<ε为止,ε为一个很小数,比如10-6,此时认为f(x)≈0。实现各部分功效几种函数:#include<stdio.h> #include<math.h> floatf(floatx)/*定义f函数,以实现f(x)=x3-5x2+16x-80*/ {floaty; y=((x-5.0)*x+16.0)*x-80.0; return(y); } floatxpoint(floatx1,floatx2)/*定义xpoint函数,求出弦与x轴交点*/ {floaty; y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); return(y); }floatroot(floatx1,floatx2)/*定义root函数,求近似根*/ {floatx,y,y1; y1=f(x1); do {x=xpoint(x1,x2); y=f(x); if(y*y1)>0)/*f(x)与f(x1)同符号*/ {y1=y;x1=x;} else x2=x; }while(fabs(y)>=0.0001); return(x); } voidmain()/*主函数*/ {floatx1,x2,f1,f2,x; do {printf("Inputx1,x2:\n"); scanf("%f,%f",&x1,&x2); f1=f(x1);f2=f(x2); }while(f1*f2>=0); x=root(x1,x2); printf("Arootofequationis%8.4f\n",x); }5.10递归函数递归函数特点用递归法计算n!递归函数特点递归函数特点递归函数特点例5.9求整数各位数字之和例5.9求整数各位数字之和例5.10汉诺塔问题汉诺塔简介:通过计算,对于64个盘子至少需要移动 264-1=1.8×1019次 若每秒钟移动一次,需一万亿年,而太阳原子燃料大约只能维持150亿年。若用当代电子计算机,一微秒移动一次,也需要一百万年。下面以三个盘子为例。要从源1移动到目的3,需要借助中间2来过渡。一个可行移动方案是:汉诺塔问题简介问题描述:有三根柱子A、B、C。设A柱上有n个盘子,盘子大小不等,大盘子在下,小盘子在上,以下图所表示。要求将A柱上n个盘子移到C上,每一次只能移一个盘子。在移动过程中,能够借助于任一根柱子,但必须确保三根柱子上盘子都是大盘子在下,小盘子在上。要求编程输出移动盘子步骤。汉诺塔问题算法分析当n=3时,递归调用执行情况以下图所表示:汉诺塔问题程序实现/*把A柱上n个盘子借助于B柱移到C柱上*/ voidhanoi(intn,charA,charB,charC) { if(n==1) move(A,C); else { /*将A柱上n-1个盘子借助于C柱移到B柱上*/ hanoi(n-1,A,C,B); /*将A柱上最后一个盘子移到C柱上*/ move(A,C); /*再将B柱上n-1个盘子借助于A柱移到C柱上*/ hanoi(n-1,B,A,C); } }5.11局部变量和全局变量全局变量5.12变量存储种类动态存储方式与静态存储方式变量存储种类自动变量auto静态变量静态局部变量存储器变量register外部变量外部变量应用为确保访问安全,扩展全局变量作用域时,以块作用域扩展为佳。 引用性阐明外部