(第7章 函数.ppt

  1. 1、本文档共78页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 数值交换 从程序的执行过程中可

文档评论(0)

ozprb1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档