C语言程序设计No.9--第八章函数

上传人:ji****72 文档编号:26839280 上传时间:2018-01-02 格式:PPT 页数:42 大小:1.33MB
返回 下载 相关 举报
C语言程序设计No.9--第八章函数_第1页
第1页 / 共42页
C语言程序设计No.9--第八章函数_第2页
第2页 / 共42页
C语言程序设计No.9--第八章函数_第3页
第3页 / 共42页
C语言程序设计No.9--第八章函数_第4页
第4页 / 共42页
C语言程序设计No.9--第八章函数_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《C语言程序设计No.9--第八章函数》由会员分享,可在线阅读,更多相关《C语言程序设计No.9--第八章函数(42页珍藏版)》请在金锄头文库上搜索。

1、1,引入,若程序有上百行, 那么怎么调试最方便? 如果我们设计一个程序完成下面的计算: 其中,m、n为正整数且mn 该如何设计程序最有效?,?,自顶向下逐步细化模块化设计结构化编程,2,如要设计并开发一个“财政信息系统”,如何着手?需求分析系统设计程序编写,进一步展开,自顶向下逐步细化模块化设计结构化编程,3,如要设计并开发一个“财政信息系统”,如何着手?,4,5,第八章 函数(第09讲),主讲: 刘怀亮经济管理学院信息管理系,7,第八章 函数,内容提要: 8.1 概述 8.2 函数定义的一般形式 8.3 函数参数和函数的值 8.4 函数的调用 8.5 函数的嵌套调用 8.6 函数的递归调用

2、8.7 数组作为函数参数 8.8 局部变量全局变量 8.9 变量的存储类别 8.10 内部函数和外部函数,8,8.1 概述,一个C程序可以分为若干个函数;每个程序有且仅有一个主函数(main),其他函数都是“子函数”;子函数可以相互调用, 但主函数不能被调用一个C源程序由一个或 多个文件构成,一个 源程序文件是一个编译单位,9,#includevoid printstar()printf(*n);void printmessage( ) printf(Hello, world.n); printstar( );void main( ) printstar( ); printmessage( )

3、;,8.1 概述,1. C程序的执行从main函数开始,调用其他函数后仍回到main函数,程序在main函数结束时结束。2.所有子函数都是平行的,任何子函数都不属于其他函数3.从用户的角度看,函数可分为: 标准函数,即库函数 自定义函数4.从函数形式看,可分为: 无参数函数:如 printmessage( ) 有参数函数:如 printstar( int n),说明,#includevoid printstar( int n) int i; for(i=0;in;i+) printf(*); printf(n);void printmessage( ) printf(Hello, world.

4、n); printstar(15);void main( ) printstar(15); printmessage( );,*Hello, world.*,程序8-001,10,#includevoid printstar()printf(*n);void printmessage( ) printf(Hello, world.n); printstar( );void main( ) printstar( ); printmessage( );,#includevoid printstar( int n) int i; for(i=0;in;i+) printf(*); printf(n)

5、;void printmessage( ) printf(Hello, world.n); printstar(15);void main( ) printstar(15); printmessage( );,#includevoid printstar(int n) int i; for(i=0;in;i+) printf(*); printf(n);void printname(char a) printf(hello, %sn,a); printstar(15);void main( ) char ch_a=flower; printstar(15); printname(ch_a);,

6、程序8-002,#includevoid printstar(int n) int i; for(i=0;iy)?x:y; return(z);void main( )int a,b,c; scanf(“%d%d”,形式参数说明方法:类型说明 变量名,类型说明 变量名,若定义成max(int x,y)?,错误!因为形参要单个定义!,多个形参需单独说明,如:void printhello( ) printf(“Hello, world.n”);,如:int max( int x, int y)int z; z=(xy)?x:y; return(z);又如:void printhello( cha

7、r name ) printf(“Hello, %sn”,name);,12,8.2 函数定义的一般形式,函数定义的一般形式:类型说明 函数名(形式参数说明) 函数体一般情况下,函数由两部分组成:局部变量: 函数体内定义的变量, 其有效范围仅限于所在的 函数内部,离开函数体则 无意义。,局部变量说明 语句,#includeint max(int x, int y)int z; z=(xy)?x:y; return(z);void main( )int a,b,c; scanf(“%d%d”,说明,13,8.3 函数参数和函数的值,一个C程序由若干个函数组成,各函数调用时经常需要传递一些数据。即

8、调用函数把数据传递给被调用函数,经被调用函数处理后,得到一个确定的结果,在返回调用函数时,把这结果返回调用函数。,#includevoid main( ) int a,b,c; int max(int x,int y); scanf(%d,%d,例 比较两个数并输出大者.,程序8-004,函数声明,14,8.3 函数参数和函数的值,一、形参与实参形式参数:定义函数时函数名后括号中的参数实际参数:调用函数时函数名后括号中的参数说明:max有个形式参数x和y形参x和y只在函数max中使用a和b是主函数中定义的变量main函数调用函数maxa和b为函数max的实参,#includevoid main

9、() int a,b,c; scanf(%d %d,用于函数间数据的传递,23 89Max is 89,15,8.3 函数参数和函数的值,1、定义函数时,必须说明形参的类型,形参只能是变量或数组。2、函数被调用前,形参不占用内存;函数调用结束后,形参所占用的内存也将被回收。3、实参可以是常量,变量或表达式。4、实参与形参的类型必须一致,个数相同。5、C中实参对形参的数据传递是“值传递”,即单向传递。它仅由参数的对应位置确定,与名字无关。6、若形参与实参类型不一致,自动按形参类型转换函数调用转换7、形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放,#includevoid

10、 main() int a,b,c; scanf(%d,%d,说明,16,8.3 函数参数和函数的值,二、函数的返回值1、返回函数值的方法 函数的返回值也就是函数值,是一个确定的值。如果一个函数有返回值,就必须使用return语句。一个函数中可以有一个以上的return语句,但不论执行到哪个return都将结束函数的调用返回主调函数。return语句中的括号可以省略;renturn后面的值可以是一个表达式。,#includevoid main() int a,b,c; scanf(%d,%d,17,8.3 函数参数和函数的值,二、函数的返回值2、函数值的类型函数的类型即函数值的类型。如: 函数

11、max是int型的也就是函数值是int型省略了类型说明的函数是int型的return语句中表达式的值一般应与函数类型一致.如果不一致,则需要进行类型转换.只有函数型数据可以进行自动类型转换,以函数类型为准.,#includevoid main() int a,b,c; scanf(%d,%d,18,8.3 函数参数和函数的值,二、函数的返回值3、不需要返回值的函数如果函数中没有使用return语句,函数返回的是一个不确定的数值。如果一个函数不需要返回值(表示一个过程),可以用void做类型说明。如果一个函数被声明为void类型,就不允许再引用它的返回值(即只能用函数语句形式调用)。,#incl

12、udevoid printstar() printf(“*n”); void printmessage() printf(“Hello,world.n”); printstar();void main() printstar(); printmessage();,19,8.4 函数的调用,一、函数调用的一般形式: 函数名(实参表列)说明:如果调用无参函数,实参列表可以忽略,但括号不能省略.实参的个数和形参一般相等.实参与形参的类型应一一对应,必要时使用类型转换.注意: 不同系统中,实参的计算顺序不同.计算机上一般是从右到左.为避免由此引起的混乱,一般应在调用函数前计算出实参的值。,#includeint f(int a, int b) int c; if (ab) c=1; else if(a=b) c=0; else c=-1; return c;void main() int i=2,p; p=f(i,+i); printf(%dn,p); printf(%d,i);,

展开阅读全文
相关资源
相关搜索

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

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