书签 分享 收藏 举报 版权申诉 / 34
上传文档赚钱

类型C语言程序设计实例教程课件7.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4145409
  • 上传时间:2022-11-14
  • 格式:PPT
  • 页数:34
  • 大小:115.57KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《C语言程序设计实例教程课件7.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    语言程序设计 实例教程 课件
    资源描述:

    1、第7章 函 数 7.1 模块化程序设计的概念 7.2 库函数 7.3 函数的定义和调用 7.4 函数的返回值及其类型 7.5 函数调用时参数间的传递 7.6 函数的嵌套调用 7.7 函数的递归调用 7.8 局部变量和全局变量 7.9 静态存储变量和动态存储变量 7.10 内部函数和外部函数 7.11 程序举例 7.1 模块化程序设计的概念 模块化程序设计,是将一个大型程序按照其功能分解成若干个相对独立的功能模块,然后再分别进行设计,最后把这些功能模块按照层次关系进行组装。基本思想是“自顶向下、逐步求精”。C语言程序是一个函数式的程序结构,即C语言程序的全部功能都是由函数实现的,而每个函数对应一

    2、个独立的模块,通过函数间调用来实现程序的总体功能。如图7.1所示,是一个程序中函数调用示意图。在C语言中,函数分为主函数、库函数、用户自定义函数三种。程序的执行由主函数开始,然后调用其它函数,最终返回主函数结束。main函数函数 a函数函数 b函数函数 c函数函数 d函数函数 e函数函数图7.1 函数调用示意图 7.2 库函数 C语言提供了丰富的标准函数,即库函数。7.2.1 C语言常用库函数语言常用库函数 1)数学函数数学函数 调用数学库函数时,要求程序在调用数学库函数前应包含下面的头文件:#include ma 2)字符函数和字符串函数字符函数和字符串函数 调用字符函数时,要求程序在调用字

    3、符函数前应包含下面的头文件:#include ctype.h 调用字符串函数时,要求在源文件中应包含下面的头文件:#include string.h 3)输入输出函数输入输出函数 调用输入输出函数时,要求在源文件中应包含下面的头文件:#include stdio.h 4)动态分配函数和随机函数动态分配函数和随机函数 调用动态分配函数和随机函数时,要求在源文件中应包含下面的头文件:#include stdlib.h7.2.2 标准库函数的调用标准库函数的调用 前面讲到,调用C语言标准库函数时必须在源程序中用include命令。include命令的格式是:#include 或#include 头文

    4、件名头文件名7.3 函数的定义和调用 由用户编写的函数称为自定义函数。7.3.1 函数的定义函数的定义 函数定义的一般格式如下:类型说明符类型说明符 函数名函数名(类型名类型名 形式参数形式参数1,类型名类型名 形式参数形式参数2,)/*函数的首部函数的首部 */说明部分说明部分 /*函数体函数体 */语句部分语句部分 7.3.2 函数的调用函数的调用 1.函数调用的一般形式函数调用的一般形式 函数调用的一般形式为:函数名函数名(实参表实参表);如果是调用无参函数,则实参表可以没有,但括号不能省略。如果实参表列包含多个实参,则各实参间用逗号隔开。实参与形参的个数应相等,类型应一致。实参与形参按

    5、顺序对应,一一传递数据。2.函数调用的方式函数调用的方式 按函数在程序中出现的位置来分,有3种函数调用方式。1)函数语句函数语句 函数语句的调用,是指把被调函数作为一个独立的语句直接出现在主调函数中。2)函数表达式函数表达式 被调函数出现在主调函数中的表达式中,这种表达式称为函数表达式。在被调函数中,必须有一个函数返回值,返回主调函数以参加表达式的运算。3)函数参数函数参数 函数参数的调用,是指被调函数作为另一个函数的参数时的调用,而另一个函数则是被调函数的主调函数。嵌套调用,如图7.2所示。main函数函数 printf函数函数 max函数函数图7.2 函数嵌套调用 3.调用函数时的注意事项

    6、调用函数时的注意事项 调用函数时,应注意以下几点:(1)被调函数必须是已存在的函数,可以是自定义函数,也可以是库函数。(2)在主调函数中,要对被调函数先做声明。(3)如果被调函数的返回值为int类型,则不管被调函数位置如何均不需要在主调函数中说明。关于函数声明的一般形式为:函数类型函数类型 函数名函数名(参数类型参数类型1,参数类型参数类型2);或 函数类型函数类型 函数名函数名(参数类型参数类型1,参数名参数名1,参数参数类型类型2,参数名参数名2);(4)如果被调用函数的声明放在源文件的开头,则该声明对整个源文件都有效。(5)如果被调用函数的声明是在调用函数定义的内部,则该声明仅对该调用函

    7、数有效。(6)在函数调用中,有下面几种情况可以省略声明:a.如果调用函数和被调用函数是在同一个源文件中,而且被调用函数的定义是在调用函数之前。b.函数的返回值是整数或字符。c.所有被调用函数的声明都是在源文件开头。d.如果被调用函数不是在源文件开头,而是在源文件中间且在所有函数之外某处被声明时,则在被声明之后引用它时,不必再声明,但在被声明之前引用它时,需要对其进行声明。(7)如果调用函数和被调用函数的定义是在同一源文件中,应该先说明或定义被调用函数。7.4 函数的返回值及其类型 函数的返回值通过函数体内的return语句实现。return语句的格式如下:return 表达式表达式;或 ret

    8、urn (表达式表达式);如果没有返回值,格式中的左、右圆括号可以省略,即写为:return ;7.5 函数调用时参数间的传递 函数之间的联系,是通过调用函数时参数的传递及函数值的返回。在定义函数时,函数名后面圆括号内的参数称形式参数。调用函数时,函数名后面圆括号内的参数为实参。7.5.1 变量、常量、数组元素作为函数参数变量、常量、数组元素作为函数参数 在函数调用时,使用变量、常量或数组元素作为函数参数时,将实参的值复制到形参相应的存储单元中,即形参和实参分别占用不同存储单元,这种传递方式称为“值传递”。值传递的特点是单向传递,即只能把实参的值传递给形参,而形参值的任何变化都不会影响实参。7

    9、.5.2 数组名作为函数参数数组名作为函数参数 数组名作为函数参数时,不是值的单向传递,而是把实参数组的首地址传给形参数组,这个两个数组共用一段存储单元,即实参数组名和形参数组名共同指向数组的第一个元素。7.6 函数的嵌套调用 C语言中的函数定义是互相独立的,函数和函数之间没有从属关系,一个函数既可以被其它函数调用,同时它也可以调用别的函数,这就是函数的嵌套调用。fun1main返回printffun2返回调用调用调用结束图7.4 函数嵌套调用过程 7.7 函数的递归调用 所谓递归,就是自己调用自己。函数的递归调用有两种形式:(1)直接递归调用,即一个函数可直接调用该函数本身。(2)间接递归调

    10、用,即一个函数可间接地调用该函数本身。7.8 局部变量和全局变量 7.8.1 局部变量局部变量 在一个函数内定义的变量称为内部变量,它只在本函数内有效,而在其它函数内不能使用,故这些变量又称为局部变量。7.8.2 全局变量全局变量 在函数外部定义的变量称为外部变量,外部变量是全局变量。全局变量的作用范围为:从定义全局变量位置开始到源程序结束。全局变量可以在其作用范围内由其它函数所共用。7.9 静态存储变量和动态存储变量 变量从变量值存在的时间(即时域,亦称生存期)角度来分,可分为静态存储变量和动态存储变量。7.9.1 静态存储变量静态存储变量 所谓静态存储变量是指在程序运行期间分配固定的存储空

    11、间的变量。静态存储变量的定义格式为:static 数据类型名数据类型名 变量名变量名=初始化常数表达式初始化常数表达式 7.9.2 动态存储变量动态存储变量 所谓动态存储变量是在程序运行期间根据需要进行动态的分配存储变量,它是在程序执行的某一时刻被动态建立,在另一时刻被动态撤消的一种变量。动态存储变量有两种:自动(auto)变量和寄存器(register)变量。1.自动变量 自动变量说明的一般格为:auto 类型名类型名 变量名变量名=初始表达式初始表达式,auto为自动变量存储类别标识符,auto可省略,系统默认为auto。以前函数中所定义的变量大都是auto变量。2.寄存器变量 所谓寄存器

    12、变量,是指将变量的值保留在CPU(中央处理器)的寄存器内,它不占用内存单元。程序运行时,可以直接访问寄存器内的数据,其速度比访问内存的数据快得多。register 类型标识符号类型标识符号 变量名变量名7.10 内部函数和外部函数 根据函数的使用范围,可分为内部函数和外部函数。7.10.1 内部函数内部函数 在定义函数的前面使用static关键字,此函数称内部函数。7.10.2 外部函数外部函数 在定义函数的前面加extern关键字,此函数称为外部函数。如:extern int fun(a,b)7.11 程序举例程序举例 【例7-16】编写函数,要求统计输入文本中单词的个数,单词之间用空格符、

    13、换行符、跳格符隔开。程序如下:#include stdio.h“#define IN 1 /*标志一个单词的内部 */#define OUT 0 /*标志一个单词的外部 */main()int n;n=countword();printf(n=%dn,n);countword()int c,nw,state;state=OUT;nw=0;while(c=getchar()!=EOF)if(c=|c=n|c=t)state=OUT;/*在一个单词的外部 */else if(state=OUT)/*如果遇到单词的第一个字符 */state=IN;/*状态变量置成IN,在单词的内部 */nw+;/*

    14、单词个数增1 */return nw;说明:(1)当状态变量state标志为:在单词内部且读入的字符不是分隔符时,表示c仍是单词的一部分,因此不作任何操作;如果读入的字符是分隔符,表示一个单词已结束,准备统计下一个单词。(2)在while循环中,用EOF作为循环结束的标志,EOF是在stdio.h文件中定义了的预定义符,在Turbo C的环境下,输入Ctrl+Z后,回车,即输入了EOF。【例7-17】从键盘输入一较大正整数n(n=6),并验证从6到n之间的所有偶数都可以分解为两个素数之和的形式。程序如下:#include stdio.h#include math.h int prime(int

    15、 m)int i,k;k=sqrt(m);for(i=2;i=6:);scanf(%d,&limit);if(limit=6)break;for(n=6;n=limit;n+=2)for(a=3;a=n/2;a+=2)if(prime(a)b=na;if(prime(b)printf (%d=%d+%dn,n,a,b);break;说明:(1)prime(m)函数是用于验证m是不是素数的函数。当其返回值为0时,说明m不是素数;当其返回值为1时,说明m是素数。(2)main()函数中有一个双层循环,第一层循环的循环变量n是一个从开始到limit为止的连续偶数,此程序的主要功能就是判断这些偶数是否

    16、都能表示成两个素数之和的形式;第二层循环的主要目的是寻找a、b(b=n-a)两个素数之和,以使n=a+b成立。由于除此之外,其它素数都是奇数,因而a、b始终取奇数。(3)由此程序不难看出,如果一个偶数能够表示为一组以上的素数之和,则只取一个素数最小、另一个素数最大的一组。【例7-18】输入100个整型数,并把其中的最大值和最小值显示出来。程序如下:#include stdio.h int max,min;void find (int a ,int n)int i;max=a0;min=a0;for(i=1;imax)max=ai;if(aimin)min=ai;main()int data10,i;for(i=0;i10;i+)scanf (%d,&datai);find(data,10);printf(max=%d,mim=%dn,max,min);说明:find函数将查找到的最大值和最小值分别存放 在全局变量max和min中,并通过max和min传递给main()函数。由此可见,利用全局变量可以在函数之间进行多个数据的传递。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:C语言程序设计实例教程课件7.ppt
    链接地址:https://www.163wenku.com/p-4145409.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库