资源描述:
《研究式学习——C语言程序设计(第二版) 方娇莉 李向阳_ 5第五章函数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C程序设计
2、第五章函数第五章C程序设计
3、第五章认识函数函数的定义及调用函数的参数传递函数的嵌套与递归调用变量的作用域与存储类型编译预处理本讲主要内容C程序设计
4、第五章C语言为什么要引入函数,函数何为?引子♪分而治之的工程学思想->结构化编程理念,用于化解大型任务,降低程序的复杂度。C程序设计
5、第五章main(){}函数1(){}函数4(){}函数2(){}函数3(){}函数5(){}函数6(){}C程序结构模块化-函数运用调用:函数名(实参)返回:returnC程序的功能通过函数之间的调用来实现C程序设计
6、第五章C语言是函数式语言;一个C程序至少包含一
7、个main函数,也可以包含一个main函数和若干个其它函数;函数分为系统提供的库函数(如scanf)和用户自己定义函数;5.1认识函数C程序设计
8、第五章文件1文件2……文件n函数1……函数nC程序C程序的构成:函数是一段完成特定任务的程序,被调用时将自动执行,运行完毕后能保存计算结果并返回到程序原来的位置继续计算。函数分为三类:主函数:main()标准库函数:系统提供,如gets(),puts()等自定义函数:由用户编写函数的概念C程序设计
9、第五章用前面所学知识编程,可在main()函数中完成计算main(){longintj,t=1,s=0;for(
10、j=1;j<=3;j++)t=t*j;s+=t;for(t=1,j=1;j<=5;j++)t=t*j;s+=t;for(t=1,j=1;j<=8;j++)t=t*j;s+=t;printf(“3!+5!+8!=%ld”,s);}如何使用函数编程计算3!+5!+8!引例!!!重复累赘,可重用性、可靠性、可维护性差程序有问题吗?C程序设计
11、第五章把求阶乘的程序段独立写成一个函数:main(){longs=0;s=jch(3)+jch(5)+jch(8);printf(“3!+5!+8!=%ld”,s);}longjch(intn){longt=1;
12、intj;for(j=1;j<=n;j++)t*=j;returnt;}函数nn!程序运行结果:3!+5!+8!=40446提出问题C程序设计
13、第五章函数的定义形式函数头{函数体}函数头的形式:类型名 函数名(形参列表)5.2函数的定义与调用无类型时自动按整型处理。当函数无返回值时用void作为类型定义符命名规则同变量,它是被初始化的内部变量无参数时写voidC程序设计
14、第五章函数可通过return语句返回一个值return(表达式);函数定义如下:longjch(intn){longt=1;intj;for(j=1;j<=n;j++)t*=j;re
15、turnt;}返回值的类型与函数类型不一致时,以函数的类型为准。return后的括号可有可无函数体函数体由说明部分和语句部分组成,它描述了函数实现某一功能的执行过程C程序设计
16、第五章例voidpok(){printf(“0k”);}return可使程序的执行从当前函数返回调用它的函数返回时释放被调函数的参数及变量所占用的内存空间向调用函数返回一个值(void类型的函数除外)通过return语句只能返回一个值return返回例intabsint(intx){if(x>=0)returnx;elsereturn-x;}无返回值时可省略return语句C程序
17、设计
18、第五章当函数调用在前,定义在后时(当函数为int型时也可不声明),必须进行函数原型声明函数原型含下列信息:函数类型函数名函数的参数(个数、类型及顺序)例如:intabsint(int);voidpok();intff1(intage,charsex);或intff1(int,char);函数的声明C程序设计
19、第五章函数必须通过调用才能被执行,调用的功能是:实参向形参传递数据为形参及函数体内的变量分配内存空间中断当前函数的执行,把执行流程转向被调用函数的入口并执行被调用函数函数的调用就是一个函数(调用函数)调用另一个函数(被调用函数)函数调用形式为
20、:函数名(实参表列)如:pok();函数无返回值c=max(a,b);函数有返回值C程序设计
21、第五章main(){intaddxy();intx,y,z;scanf(“%d%d”,&x,&y);z=addxy(x,y);printf(“%d+%d=%d.”,x,y,z);}例:从键盘输入两个整数,并输出两数之和intaddxy(inta,intb){intc;c=a+b;return(c);}函数举例调用时实参的数据(或地址)传给形参,实参的个数、类型和位置必须与形参一一对应C程序设计
22、第五章floatfc(intn)/*求1+1/2+1/3+…+1/
23、n的值*/{floats;inti;s=0;for(i=1;i<=n;i++)s+=1/(fl