- 1、本文档共78页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(第7章 函数
第七章 函数 函数如何定义? 函数如何调用? 函数调用时参数如何传递? 如何确定变量的作用域? 7.1 函数的概述 我们之前一直编写的C程序: 7.1 函数的概述 函数是C语言程序的基本组成单元。 在C语言中,函数不一定要有参数,也不一定要计算数值。 每个函数本质上是一个自带声明和语句的小程序。可以利用函数把程序划分成小块,这样便于人们理解和维护程序。 函数可以复用,即一个函数最初可能是某个程序的一部分,但可以将其用于其他程序中。 函数的引入 求 1001和1003是否是素数? m=1001; n=sqrt(m); for(i=2;i=n;i++) if(m%i == 0) break; if(in) printf(“%d是素数”,m); else printf(“%d不是素数”,m); 7.1 函数的概述 函数是C语言程序的基本组成单元。 7.1 函数的概述 printf(%.2f和%.2f的平均值为:%.2f\n, x, y, average(x, y)); 这条语句产生的效果为: 1)程序调用average函数,并且把变量x和y作为实际参数传递给a和b; 2)average函数执行自己的函数体,返回x和y的平均值; 3)printf函数显示函数average的返回值。 没有把average函数的返回值保存在任何地方,程序显示出这个值之后就丢弃了,如果需要在后面的程序中继续使用返回值,可以把这个返回值赋值给变量: avg = average(x,y); 7.1 函数的概述 为什么要有函数声明呢? 假设上面程序没有函数声明这条语句,当遇到main函数中第一个average函数调用时,编译器没有任何关于average函数的信息,编译器不知道average函数有多少形式参数,形式参数的类型是什么,也不知道average函数的返回值是什么类型。所以程序无法正常编译。 解决方法: 一种方法是安排程序,使得每个函数的定义都在此函数的调用之前 另一种方法是函数声明 其形式为: 函数类型 函数名(形式参数); 7.1 函数的概述 函数声明必须与函数定义一致。 7.2 函数的简单调用 调用函数时,将实际参数传递给形式参数并执行函数定义中所规定的程序过程,以实现相应的功能。 在C语言中,调用标准库函数时,只需要在程序的最前面用#include命令包含相应的头文件,如printf函数需要包含stdio.h头文件;调用自定义函数时,程序中必须有与之对应的函数定义。 7.2.1 输出数字金字塔 7.2.1 输出数字金字塔 7.2.2 判断素数 【例7-4】判断1777和1991是否为素数? 题目分析: 1)该题目要求判断两个整数是否为素数,我们考虑定义一个函数prime用来判断一个整数是否为素数,这样只需两次调用函数prime,避免代码重复。 2)定义函数头部,由函数prime的功能可知其形式参数为整型,而且应该具有返回值,并能标明判断结果。能够标识是或否的数据类型,最常用的就是整型,用0表示否,1表示是。这样就可以构造出函数prime的头部:int prime(int n)。 3)定义函数体,素数是只能被1与其本身整除的整数。判断整数n是否为素数方法为用i=2,3,……,sqrt(n)去除n,若都不能整除n,则n是素数,函数返回1;否则n不是素数,函数返回0。 4)书写main函数,两次调用函数prime即可。 7.2.2 判断素数 7.2.2 判断素数 7.2.2 判断素数 在C语言中,函数通过return返回函数值。一个函数可以包含多个return语句,但是,当程序执行到第一个return语句时,函数执行完毕,后面的程序不再执行,返回到函数调用处。 例如: int fun() { return 10; int a = 5; return a; } 该函数只能返回10。 7.2.2 函数返回值 如果,return返回值的类型与函数类型不一致,系统自动转换成函数类型后返回。 7.2.3 数值交换 【例7-5】编写函数交换两个变量的数值 7.2.3 数值交换 为什么没有实现数值的交换? 要弄清楚这个问题,需要了解C语言中实际参数和形式参数是如何传递的。 形式参数出现在函数定义中,只有在函数被调用时才在内存中为其分配变量空间,并且在函数调用结束后,释放变量空间。也就是说,形式参数中的变量并不是一直存在的,它随着函数调用开始而生产,函数调用结束而消失。 实际参数是出现在函数调用中的表达式,其作用是在函数调用时,计算出表达式的值传递给形式参数,完成函数功能。 7.2.3 数值交换 程序执行过程对应的内存变化: 7.2.3 数值交换 从程序的执行过程中可
您可能关注的文档
- (第3章推销要素.ppt
- (第3章用例及用例图-案例.ppt
- (第3节_中国共产党与民主党派的合作.ppt
- (第3节《动物行为的研究》1.ppt
- (第3讲 党的指导思想.ppt
- (第3课 社会主义制度的建立.ppt
- (第4章 企业国际化过程.ppt
- (第4章 会计凭证.ppt
- (第4章 进出口商品归类.ppt
- (第4章-环境分析.ppt
- 第十一章 电流和电路专题特训二 实物图与电路图的互画 教学设计 2024-2025学年鲁科版物理九年级上册.docx
- 人教版七年级上册信息技术6.3加工音频素材 教学设计.docx
- 5.1自然地理环境的整体性 说课教案 (1).docx
- 4.1 夯实法治基础 教学设计-2023-2024学年统编版九年级道德与法治上册.docx
- 3.1 光的色彩 颜色 电子教案 2023-2024学年苏科版为了八年级上学期.docx
- 小学体育与健康 四年级下册健康教育 教案.docx
- 2024-2025学年初中数学九年级下册北京课改版(2024)教学设计合集.docx
- 2024-2025学年初中科学七年级下册浙教版(2024)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)六年级下册浙摄影版(2013)教学设计合集.docx
- 2024-2025学年小学美术二年级下册人美版(常锐伦、欧京海)教学设计合集.docx
文档评论(0)