【程序设计基础】函数

上传人:豆浆 文档编号:50933662 上传时间:2018-08-11 格式:PPT 页数:109 大小:712.50KB
返回 下载 相关 举报
【程序设计基础】函数_第1页
第1页 / 共109页
【程序设计基础】函数_第2页
第2页 / 共109页
【程序设计基础】函数_第3页
第3页 / 共109页
【程序设计基础】函数_第4页
第4页 / 共109页
【程序设计基础】函数_第5页
第5页 / 共109页
点击查看更多>>
资源描述

《【程序设计基础】函数》由会员分享,可在线阅读,更多相关《【程序设计基础】函数(109页珍藏版)》请在金锄头文库上搜索。

1、内容回顾:n算法n数据类型、运算符、表达式n顺序结构n选择结构n循环结构n数组第八章#include void main() int max(int x,int y); int a, b, c,m; scanf(“%d,%d,%c“, m=max(a,b); m=max(c,m);printf(“max=%dn“,m); int max(int x, int y) int z;if (xy) z=x; else z=y;return (z);l 本章要点 函数的概念函数的概念 函数的定义与调用函数的定义与调用 函数的递归调用函数的递归调用 变量的作用域变量的作用域 函数的作用域函数的作用域8.

2、1 概述 是什么 为什么 怎么用可以完成某个特定功能的一段程序在已有程序的基础上构造新的程序而无需要 从头做起将一些常用功能块写成函数将复杂的问题分解为多个相对简单的小 问题(如,输入两个数,对其中的小 数求阶乘,判大数是不是素数)8.1 概述 模块化程序设计:将较大规模的程序划分成几个功能相对独立的程序模块,分别(由不同的编程人员)进行编写,各模块之间用接口联系。只要接口关系不变,模块内部的具体细节可随意修改。每一个模块用来实现一个特定的功能。高级语言中用子程序实现模块的功能。C语言中子程序由函数来完成。一个程序由一个main函数和若干个子函数构成。 函数间的调用关系: 主函数调用其他函数,

3、其他函数可以互相调用。说明:n一个程序由一个或多个函数组成。n程序的执行是从main函数开始的,在main函数中 结束,如果在main函数中调用其他函数,在调用后流 程返回到main函数。n所有函数互相独立的,函数间可以互相调用,但不 能调用main函数。main函数由系统调用。n使用者角度标准函数、用户自定义函数n定义者角度有参函数和无参函数#include void main( ) int max(int x,int y); int a, b, c; scanf(d,d, c=max(a,b); printf(max=dn,c); int max(int x, int y) int z;i

4、f (xy) z=x; else z=y;return (z);8.函数定义的一般形式 函数类型函数类型 函数名(函数名( 参数类型参数类型 参数名列表参数名列表 ) 声明部分;声明部分;语句部分;语句部分; 注: 函数名的命名与变量命名规则相同 表示其内的东西可以缺省。函数类型函数类型:指函数返回值的数据类型。缺省为 int,没有为void.8.函数定义的一般形式 无参函数类型标识符 函数名()声明部分语句部分void printstar() *定义printstar函数* printf(“* * * * * * * * * * * * * * * *n“); 有参函数函数类型 函数名(参数

5、类型 参数列表) 声明部分语句部分 (int ,int ) ;/ *函数体中的声明部分*?; return(); 空函数类型标识符 函数名() 主函数调用空函数:为今后扩充留余地dummy( ) 8.函数参数和函数的值 主函数(执行调用的函数)和子函数(被调 用的函数)之间有数据传递的关系。在不同的函数之间传递数据,可以使用:参数:通过形参和实参,主函数把值传 递给子函数返回值:子函数用return语句将结果返 回给主程序全局变量:外部变量#include void () int max(int ,int ); /* 对函数的声明 */int ,;scanf(,);(,);printf( ,)

6、; int max(int ,int )*定义有参函数max *int ;?;return(); 通过函数调用,可使两个函数中的数据发生联系。形式参数: 定义时函数名后面括号中的变量名称为“形 式参数”(简称“形参”)。8.形式参数和实际参数如:int max(int x, int y)中的x,y实际参数: 主函数调用一个子函数时,调用语句中函数名后面 括号中的参数(可以是一个表达式)称为“实际参数 ”(简称“实参”)。如:max(a,b) 中的a和bmax(3,5) 中的3和5max(a+3,b+c)关于形参与实参的说明:1.定义函数时,必须指定形参的类型。int max(int x,int

7、 y)2.实参与形参的类型应相同或兼容。实参可以是常量,变量或者表达式如果是变量或表达式,那么其中的变量应该和形 参的类型一致,并有确定的值max(,);3.实参要与形参的个数相等、顺序对应 例:交换两个数据。#include void main( )void swap(int,int);int a,b; a=2,b=6;swap(a,b);printf(“a=%d,b=%d”,a,b); a2b6void swap(int x, int y)int temp;temp=x;x=y;y=temp; x 2y 662a、b并未被交换。值传递:实参向形参的数据传递是单向“值传递”只能由实参传给形参

8、,而不能由形参传回 来给实参。在调用函数时,给形参分配存储单元,并将 实参对应的值传递给形参,调用结束后,形参 单元被释放,实参单元仍保留并维持原值。4. 形参在函数定义时指定,不占内存的存储 单元。发生函数调用时,函数中的形参才被 分配内存单元。调用结束后,形参所占的内 存单元也被释放。8.3.2 函数的返回值 函数返回值:return后面的值作为函数带回的值 (称函数返回值)。nreturn语句如果当前函数定义时表示该函数有返回值,那么 函数体中一定有一条用于返回某值的语句return语 句用法 return x;或 return (x);其中x就是被返回的那个值,其类型一定是函数头 中所

9、指明的那个类型。如果不是那个类型,并且可以 自动转换,系统就会自动转换为函数头指明的类型, 否则造成编译错误只能返回一个值例:四舍五入 #include int round(float x) x=x+0.5;return x; void main( ) float a=2.7,b=3.4;int i,j;i=round(a); ;j=round(b);printf(“%i,%in”,i,j) ; ij2.73.4ab2.7x x3.23.43.933说明: 1.一个函数中可以有一个以上的return语句,执行到哪 一个return语句,哪一个语句起作用。if(xy) return x;else

10、 return y;只能返回一个值return后面的值可以是一个表达式。 例如: (int ,int ) return(?:); 2.函数的返回值应当属于某一个确定的类型,在定义 函数时指定函数返回值的类型。例如: int max(float ,float ) /* 函数值为整型 */ char letter(char c1,char c2) /* 函数值为字符型 */ double min(int ,int ) /* 函数值为双精度型 */ 注意: 凡不加类型说明的函数,自动按整型处理。3.在定义函数时指定的函数类型一般应该和return语 句中的表达式类型一致。 如果函数值的类型和retu

11、rn语句中表达式的值不一致,则以函数类型为准。 对数值型数据,可以自动进行类型转换。即函数类型决定返回值的类型。4.对于不带返回值的函数,应当用“void”定义函数 为“无类型”(或称“空类型”)。例 8. 返回值类型与函数类型不同 # include void main() int (float ,float );float ,;int ;scanf(,);(,);printf( ,); int max(float ,float ) float ; /* z为实型变量 */?;return();运行情况如下: , Max is 8. 函数的调用 8.1 函数调用的一般形式函数调用的一般形式为

12、: 函数名(实参列表)实参列表如包含多个实参,则各参数间用逗号隔开。实参与 形参的个数应相等,类型应匹配,按顺序对应。8.4.2 函数调用的方式函数语句:直接调用函数,把函数调用作为一个语句 例如: printStar();函数表达式:函数出现在一个表达式中例如:*(,);根据函数在程序中出现的位置,有以下三种 函数调用方式: 函数参数函数调用作为一个函数的实参。例如: m = max (a , max ( b , c ) ) ;其中max ( b , c )是一次函数调用,它的值作为max另一次调用的实参。m的值是a、b、c三者中的最大者。putchar(getchar();注意:后两种只适

13、用于有返回值的函数8.4.3 对被调用函数的声明和函数原型被调用的函数必须是已经存在的函数:库函数、用户自定义函数一个函数能被调用所具备的条件库函数:需要在本文件的第一行,用#includey) z=x; else z=y;return (z);#include void main( )void swap(int,int);int a,b; a=17,b=34;swap(a,b);printf(“a=%d,b=%d”,a,b); void swap(int x, int y)int temp;temp=x;x=y;y=temp; 函函 数数 定定 义义函数声明函数声明形参形参实参实参函数传参中

14、的值传递函数传参中的值传递例:求一个数的阶乘的函数(将该数作为参数,返回 该数的阶乘结果)#include void main( ) int n, f=1, i;printf(“请输入要求阶乘的整数nn n=”); scanf(d,for(i=n;i0;i-)f=f*i; printf(%d的阶乘为dn,n,f); int factorial(int m)int i,fac=1;for(i=m;i0;i-)fac=fac*i;return fac ; f=factorial(n);int factorial(int m);例:求两个数的最小公倍数的函数(将这两个数作为参 数,返回这两个数的最小

15、公倍数)int mul( int x,int y) int n=x*y, m,i;if(xy) m=x;else m=y;for(i=m;i void main() int a,b; scanf(“%d,%d“,printf(“最小公倍数为 %dn“,mul(a,b); 例:求三个数中的最大数的函数#include void main( ) int max3(int x,int y,int z); int a, b, c; scanf(%d,d,d, printf(max=dn,max3(a,b,c); int max(int x, int y) int z;if (xy) z=x; else z=y;return (z); int max3(int x,int y,int z) int c;c=max(x,y);c=max(c,z);return c; 8. 函数的嵌套调用嵌套调用就是在调用一个函数时

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号