欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    C语言程序设计第四版PPT-谭浩强7章.ppt

    • 资源ID:5426451       资源大小:254KB        全文页数:54页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言程序设计第四版PPT-谭浩强7章.ppt

    第7章 函数,引例,求阶乘n!,int i,n;float fac=1;printf(n=);scanf(%d,引例,求任意3个正整数的阶乘的和 a!+b!+c!,fa=1;for(i=1;i=a;i+)fa=fa*i;fb=1;for(i=1;i=b;i+)fb=fb*i;fc=1;for(i=1;i=c;i+)fc=fc*i;printf(%d!+%d!+%d!=%.0f,a,b,c,fa+fb+fc);,引例,求任意3个正整数的阶乘的和 a!+b!+c!,#include stdio.hint main()float factorial(int n);int a,b,c;float sum;printf(a=);scanf(%d,float factorial(int n)int i;float fac;fac=1;for(i=1;i=n;i+)fac=fac*i;return fac;,引例,求任意3个正整数的阶乘的和 a!+b!+c!,使用函数可减少程序的重复段落使用函数可使程序功能相对独立,便于维护模块化的程序设计,应用程序,源程序文件1,函数1,函数2,函数3,源程序文件2,函数1,函数2,C应用程序的构成,函数的概念,#include int main()int max(int x,int y);int a,b,c;scanf(%d,%d,int max(int x,int y)int z;if(xy)z=x;else z=y;return z;,程序必备的 main函数,有返回值的函数,函数的概念,上述问题也可只用一个main函数实现int main()int a,b,c;scanf(%d,%d,函数的概念,int main()void stars();stars();printf(Hello!n);stars();printf(Bye!n);stars();return 0;,void stars()int i;for(i=1;i=8;i+)printf(*);printf(n);,无返回值的函数,函数的概念,int main()void stars(int n);int n=20;stars(10);printf(Hello!n);stars(5);printf(Bye!n);stars(n);return 0;,void stars(int n)int i;for(i=1;i=n;i+)printf(*);printf(n);有参数,无返回值,函数的概念,int main()void stars(int,char);int n=20;stars(10,%);printf(Hello!n);stars(5,-);printf(Bye!n);stars(n,$);return 0;,void stars(int n,char c)int i;for(i=1;i=n;i+)printf(%c,c);printf(n);两个参数,无返回值,函数的概念,function n.官能,功能,作用,职责,典礼,仪式,数函数 vi.(器官等)活动,运行,行使职责模块化程序设计的基本方法:分解程序的功能,使每个模块的功能相对简单而独立,通过调用函数、模块来实现整个功能,使程序的编写、调试思路清晰,实现工业化的生产方式。,函数的分类,有返回值(有类型),函数的定义,指定函数名指定函数的类型指定参数名称和类型函数的功能,int max(int x,int y)int z;if(xy)z=x;else z=y;return z;,函数的返回值,类型与首部定义一致,函数首部,不是语句,行尾无分号,函数的定义,关于函数类型的说明,无返回值的函数类型为void;有返回值的函数,其类型根据返回值类型决定;省略类型时默认为int(建议不要省略),函数的调用,调用函数的准备工作包含或声明,调用库函数应在C文件开头部分使用#include要调用其他自定义函数,应在本函数体开始的声明部分加上被调用函数的声明(与函数首部内容相同的一个语句),供编译时使用如果被调用函数出现在本函数之前可省略此部分 详见7.4节,函数的调用,函数(实参列表),调用无返回值的函数可以把上述函数直接作为语句使用,以完成其功能。例如:stars(10);,函数的调用,函数(实参列表),调用有返回值的函数,应注意返回值的处理,如赋值或输出等。例如:c=max(a,b);或 printf(%d,max(a,b);,函数的参数,形式参数(形参,Formal parameter):定义函数时首部括号中定义的变量实际参数(实参,Actual parameter):调用函数时,在函数名后括号中使用的表达式调用函数时,实参将值传递给形参,函数的参数,形式参数和实际参数,void main()int max(int x,int y);int a,b,c;scanf(%d,%d,int max(int x,int y)int z;if(xy)z=x;else z=y;return z;,函数的参数,形式参数和实际参数,形参在函数调用时分配内存单元,调用结束后释放;实参可以是常量、变量、表达式实参与形参的数目、类型应一致C语言中,实参向形参传递其值“值传递”,不传递地址,形参值变化不影响实参,函数的返回值,通过函数体return语句中的表达式值获得,例如:int max(int x,int y)return xy?x:y;无返回值的函数可省略return语句函数执行到return语句结束,关于例题和习题,通过本章例题、习题,不仅要掌握函数定义和调用的语法,也要掌握更多算法和编程技巧。正如学习语文、英语要大量阅读一样,学习计算机语言也要阅读例题,掌握一些基本的编程思路、技巧和表达,才可能对新的问题较快地找到解决方法;同时要多了解语法规则相当于认字。另外,还应对计算机的工作原理和方式多一些了解。,例:最大公约数函数和最小公倍数函数,求最大公约数的算法:从1开始,逐个找公约数,直至两数中较小的一个;辗转求余(循环结构实验指导有流程图);.求最小公倍数的算法:从两数中较大的一个开始,由小到大找公倍数,直至找到;两数的乘积/两数的最大公约数。,函数的嵌套调用,调用最小公倍数函数(两数乘积/两数的最大公约数),当中需要调用最大公倍数函数函数的嵌套调用:在一个被调用的函数中调用另一个函数例:P183 例7.5,函数的递归调用,概念:在一个被调用的函数中直接或间接地调用函数本身,函数的递归调用,递归的另一个典型实例 汉诺塔(P.189例7.8),算法讲解动画演示自己玩一下,数组作为函数的参数,两个完全不同的概念以数组元素作为函数的参数 实参是数组元素,对应的形参是变量以数组名作为函数的参数 实参和形参都是数组名,数组元素作为函数的参数,数组元素作为实参形参是普通变量,值传递,int main()int a11,i;float fac(int n);for(i=1;i=10;i+)ai=i;printf(%d!=%.0fn,ai,fac(ai);return 0;,float fac(int n)float t=1;int i;for(i=1;i=n;i+)t=t*i;return t;,等价于普通变量,数组作为函数的参数,以数组名作为函数的参数实参向形参传递首元素地址,int main()int max(int a,int n);int x6,i;for(i=0;i=5;i+)scanf(%d,int max(int a,int n)int m,i;m=a0;for(i=1;im)m=ai;return m;,实参为数组名,形参为数组,不指定大小,数组作为函数的参数,以数组名作为函数的参数注意事项,形参和实参都是数组名,类型要一致;形参中不指定数组大小,指定无实际作用;形参数组名获得实参首元素的地址,即形参第一个元素与实参第一个元素占用相同的地址这就是“地址传递”方式,形参值改变会引起实参值的变化为了使形参获得实参数组的大小(元素个数),通常在形参和实参对应地增加一个数值型的参数,数组作为函数的参数,以数组名作为函数的参数,考虑:如何写一个排序函数?,多个函数组成的程序中变量引用的一些规则,C应用程序的构成,应用程序,源程序文件1,函数1,函数2,函数3,源程序文件2,函数1,函数2,变量作用域局部变量和全局变量,局部变量只在一个函数内或只在一个复合语句内有效的变量(“花括号内有效”)全局变量(外部变量)在一个模块内多个函数中均有效扩展的外部变量在多个程序文件的函数中有效(extern),变量作用域局部变量和全局变量,局部变量函数内定义,只在该函数有效,#include int main()int a,b,c;.float fac(int n)float t=0;.return t;,主函数中不存在变量n和t,fac函数中不存在变量a和b,变量作用域局部变量和全局变量,局部变量复合语句内定义,只在语句内有效,编译错误:变量k未定义,int main()int i;for(i=0;i=10;i+)int k;k=i*2;printf(%dn,k);printf(%dn,i);printf(%dn,k);,变量作用域局部变量和全局变量,局部变量在函数内定义,只在该函数内有效在复合语句内定义,只在该语句内有效形式参数也是局部变量,只在函数内有效,变量作用域局部变量和全局变量,全局变量在函数外定义,在其后的多个函数中均有效,#include int A,B,C;int main()int X,Y;float f1(int n)int f2(),变量作用域局部变量和全局变量,全局变量 例:,#include int A,B,C;int main()int f1(int n);void f2();printf(%dn,f1(3);printf(main:%dn,A);A=88;f2();,int f1(int n)int m;m=n*n;A=n*n*n;return m;void f2()printf(f2:%dn,A);,变量作用域局部变量和全局变量,扩展的外部变量在多个程序文件的函数中有效(见节),在程序中可以调用其他文件中的函数(外部函数)可通过全局变量在函数间传递多个数据,变量作用域局部变量和全局变量,判断下面程序的运行结果:,#include int a,b,n;int main()void f1(int n);a=18;b=100;n=20;printf(main:a=%d,b=%d;n=%dn,a,b,n);f1(50);void f1(int n)float a=13.89;printf(f1:a=%f,b=%d;n=%dn,a,b,n);,变量作用域局部变量和全局变量,关于全局变量应用的说明,全局变量命名时通常首字母大写通过使用全局变量,使函数能够传递实参-形参和返回值之外的其他数据滥用全局变量会造成系统资源占用,降低函数可移植性和程序的清晰度(P.202-203)在函数中定义了与外部变量(全局变量)同名的局部变量时,外部变量被屏蔽,变量的存储方式和生存期,动态存储(自动变量,形式参数)临时、动态地分配存储单元静态存储(全局变量,静态局部变量)程序运行整个过程中都存在,局部变量的存储方式和生存期,自动局部变量(auto):函数中定义的变量和形参。函数被调用时动态分配存储空间,调用结束时释放。默认方式。静态局部变量(static):函数中加static定义的变量,编译时赋初值,调用结束时保留存储空间和当前值。P.206-207说明。寄存器变量(register):保存在CPU中,现已少用。,全局变量的存储方式和生存期,均为静态存储在同一文件定义点之前引用全局变量引用前使用 extern 声明引用另一文件中的全局变量引用前使用 extern 声明限制全局变量的作用域在本文件中定义时增加 static 声明,“定义”与“声明”的区分,函数的“定义”和“声明”,#include int main()int f1(int);int f2();.a=f1(5)+f2();,int f1(int n).int f2().,函数声明(函数原型)确定要调用函数的名称、参数类型,函数调用,运行函数代码,变量的“定义”与“声明”,#include int main()int a,b,c;/*定义性声明建立存储空间*/extern X;/*非定义性声明不建立存储空间*/.int X;/*定义性声明建立存储空间*/int f1(),函数的作用域问题,内部函数和外部函数,内部函数只能在本文件中被调用,加static定义外部函数可供其他文件中的函数调用,加extern定义(或默认)。在调用前加extern声明(亦可省略extern)#include命令的实质是统一地声明调用库函数(一组已定义的外部函数),多个源文件的程序操作步骤,如何使多个文件中的变量、函数协同工作?(见补充材料),将它们组织成项目(Project,或称工程),操作步骤:建立项目(工程,*.dsp),系统同时建立一个工作区(*.dsw)项目中添加多个源代码文件(*.c或*.cpp)分别编译源文件,连接并构建exe文件以后打开工作区即可打开这个多文件组成的项目,如何使多个文件中的变量、函数协同工作?(见补充材料),或将包含函数的源文件保存在系统文件夹的include目录下(以*.c或*.h的形式),main函数所在文件中使用#include声明调用,

    注意事项

    本文(C语言程序设计第四版PPT-谭浩强7章.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开