C语言-8ppt课件

上传人:资****亨 文档编号:141959787 上传时间:2020-08-14 格式:PPT 页数:90 大小:903.50KB
返回 下载 相关 举报
C语言-8ppt课件_第1页
第1页 / 共90页
C语言-8ppt课件_第2页
第2页 / 共90页
C语言-8ppt课件_第3页
第3页 / 共90页
C语言-8ppt课件_第4页
第4页 / 共90页
C语言-8ppt课件_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《C语言-8ppt课件》由会员分享,可在线阅读,更多相关《C语言-8ppt课件(90页珍藏版)》请在金锄头文库上搜索。

1、共 90 页 第 1 页,第八章,C 语言程序设计,函 数,共 90 页 第 2 页,本章要点 函数的定义 函数的调用 函数间的数据传递 变量的存储类型 变量的作用范围 内部函数和外部函数,共 90 页 第 3 页,C程序是函数的集合体,每个函数是一个独立的程序模块。 有一个主函数,若干个子函数,程序总是从主函数开始执行。 函数可集中或分散存放在一个或多个源程序文件中。 所有子函数地位平等,可互相调用、自我调用。 引入函数的优点: 减少重复编写程序的工作量;使程序便于调试和阅读。,函数,C语言程序的结构,8.1 函数的概念和函数的定义,共 90 页 第 4 页,数学函数 math.h 字符和字

2、符串函数 ctype.h, string.h 输入/输出函数 stdio.h 动态存储分配函数 calloc(),malloc(),C函数的分类,共 90 页 第 5 页,例 输入三个整数,计算它们的和并输出运算结果。,int add(int x, int y, int z) int s; s=x+y+z; return s; ,函数示例,定义的求和函数,main( ) int a, b, c, sum ; scanf(%d,%d,%d, ,调用求和函数,共 90 页 第 6 页,8.1.2 函数的定义,定义函数应包括的内容: (1)指定函数的名字,以便以后按名调用; (2)指定函数的类型,即

3、函数值的类型; (3)指定函数的参数的名字和类型(有参); (4)指定函数执行的操作,即函数完成的功能。,在程序中用到的所有函数,必须先定义,后使用。,共 90 页 第 7 页,定义函数的一般形式 类型标识符 函数名(形式参数表) 说明部分 语句 ,共 90 页 第 8 页,1. 无参函数的定义形式 类型标识符 函数名( ) 说明部分 语句 ,例8-1 void print_message( ) printf(How are you !n); ,共 90 页 第 9 页,例8-2 int max (int x,int y) int z; z=xy?x : y; return z; ,类型标识符

4、 函数名(形式参数表列) 说明部分 语句 ,int max ( x, y) int x,y; int z; z=xy?x : y; return z; ,形参变量的说明(传统形式),形参变量的说明(现代形式),2. 有参函数的定义形式,共 90 页 第 10 页,3. 形式参数说明 形式参数: 在定义函数时函数名后面括弧中的变量名 在形参表中说明的形参,在函数体中不再说明,可以同一般变量一样直接使用。 形参调用前不占内存单元,调用时分配内存单元。调用结束后释放。 形参是函数的内部变量,只在函数内部才有意义。 对每个形参必须指明其名字和数据类型。 多个形参用逗号分隔。,共 90 页 第 11 页

5、,例:有函数调用语句: int i=3; printf(”%d,%d”,i,+i); 输出结果为:4,4,分析输出函数的结果: 自右向左:4,4 自左向右:3,4,避免这种不确定性:改为: int i=3, j; j=i; printf(”%d,%d”,i,+j); 输出结果为:3,4,共 90 页 第 12 页,8.1.3 函数的调用,1. 函数调用的一般形式为: 函数名(实际参数列表); 或 函数名(实际参数列表) 说明: 实参必须有确定的值,可以是常量、变量、表达式及函数调用。 实参与形参的类型、个数、顺序必须一致。 多个实参用逗号分隔。,2. 执行过程: 计算各个表达式(TC2.0,V

6、C+6.0实参求值顺序按自右至左); 把得到值赋给对应的形参; 执行函数体; 遇到return语句或执行完最后一条语句,返回到函数调用处.,共 90 页 第 13 页,(1) 函数语句: (把函数调用作为一个语句) 一般形式:函数名(实际参数表); 使用情况:这种方式常用于调用一个可以忽略返回值 或没有返回值的函数,只要求函数完成一定的操作。 例如: print_message( );,3. 函数调用的具体方式,(2) 函数表达式:(函数调用出现在一个表达式中) 一般形式:变量名=函数表达式 使用情况:这种表达式称为函数表达式。要求函数带回 一个确定的值参加表达式的运算。 例如:c=3+max

7、(a, b); d=pow(c, i); e= f(x1,x2,x3),(y1,y2); 函数有几个参数?,共 90 页 第 14 页,值传递: 在函数调用时,实参将其值传递给形参。 实参对形参的数据传递是“值传递”,即单向传递,只由实参传递给形参,而不能由形参传回来给实参。 实参与形参占用不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。在执行一个被调用函数时,形参的值如果发生变化,并不会改变主调函数中实参的值。,8.1.4 函数参数的传递方式,值传递的优点:被调用的函数不可能改变调用函数中变量的值, 而只能改变它

8、的局部的临时副本。,值传递的缺点:每个形式参数仅能传递一个数据,不适用需 要在函数之间传递大量数据。,地址传递:将实参的地址传递给形参,实参和形参指向同一 内存空间,对形参的修改,可以直接影响实参。,共 90 页 第 15 页,例8-3 编写函数交换两个变量的值。 #include void swap ( int x, int y) int temp; temp=x; x=y; y=temp; printf ( x=%d, y=%dn, x, y); int main ( ) int a, b; a=5; b=10; printf ( a=%d, b=%dn, a, b); swap(a, b

9、); printf ( a=%d, b=%dn, a, b); ,运行结果: a=5 ,b=10 x=10 ,y=5 a=5 ,b=10,共 90 页 第 16 页,8.1.5 函数的返回值,2. 函数的返回值语句 一般形式: return 表达式; 或 return (表达式); 功能:退出函数,将表达式的值带回主调函数,回到程序原来的位置继续执行。 return 语句也可以没有表达式,其作用是使程序执行的流程返回到调用函数。,定义:通过函数调用使主调函数得到一个确定 的值,称为函数的返回值。,共 90 页 第 17 页,说明: return语句只能把一个返回值传递给调用函数。 返回值的类型

10、为定义的函数类型,若return语句中表达式类型与函数类型不一致,以函数类型为准。 返回值可以是有确定值的常量、变量或表达式,也可以是地址。当返值是地址时,应该用指针接受。 无返回值的函数,定义为void类型(无类型函数)。 一个函数中可以有多个返回语句。 exit()函数由ANSC C定义的,功能是终止和关闭所有程序,结束程序执行,忽略返回值。0 为正常退出 非0 为非正常退出。,共 90 页 第 18 页,main( ) int a,b,c; scanf (“%d,%d”, ,例8-4 int max(int x, int y) int z; z=xy? x:y; return(z); ,

11、形参:通知系统 要预留内存位置.,实参:在运行时把值传给函数.,把函数的 结果赋给函数名,形参与实参、函数名与返回值之间的关系,共 90 页 第 19 页,例8-5用函数计算浮点数x的n次方,其中n为整型(n=0),double power(double x, int n) double p=1; int i; if(n0) for(i=1;i=n;i+) p=p*x; return p; ,main() int n; double x; scanf(“%d%lf”, ,共 90 页 第 20 页,例8-6编写函数,将一个给定的整数转换成字符串。,#include void to_str(in

12、t n) char string10; int i=0; if(n0) stringi+=n%10+0; n/=10; while(-i=0) putchar(stringi); ,int main() printf(The converted string: ); to_str(-123); return 0; 运行结果: The converted string:-123,共 90 页 第 21 页,例8-7 编写函数,求1+1/2+1/3+1/n的值,并在主函数中调用它。 #include double count(int n) int i; double sum=0; if(n=0)

13、printf(Data error!n); return 0; else for(i=1;i=n;i+) sum+=1.0/i; return sum; int main() int n; double s; printf(Please input the value: ); scanf(%d, ,运行结果: Please input the value: 5 s= 2.28,共 90 页 第 22 页,8.1.6 函数的声明,问题的提出:C语言程序可由若干文件组成,每一个文件可以单独编译。一个源程序文件由一个或多个函数组成。 在一个函数中调用另一个函数需要具备如下条件:1)函数必须是已经定义

14、的函数;2)如果使用库函数,应该在文件开头包含库函数的信息;3)若函数使用在定义之前,必须在调用函数前对函数进行声明。,同变量一样,函数的调用也应该遵循“先说明,后使用”的原则。,1. 函数声明的一般形式: 类型标识符 函数名(类型1 形参1,类型2 形参2,); 功能:通知编译程序函数值类型、参数个数及类型,为编 译程序进行类型检查提供依据。,共 90 页 第 23 页,main() float add(float x,float y); float a, b, c; scanf(“ %f, %f”, ,/*定义add函数*/ float add (float x,float y) floa

15、t z; z=x+y; return (z); ,对被调用函数的说明,作为表达式被调用,共 90 页 第 24 页,2. 函数声明和函数定义的区别,函数声明的作用是把函数的名字、函数类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。,函数定义是指对函数功能的确立,包括指定函数名、函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。,函数声明与函数定义的首部唯一区别:函数说明语句的( )之后必须有分号,而函数定义头部的( )之后没有分号。,共 90 页 第 25 页,(1) 被调用函数在主调函数之前定义,float add (float x, float y) float z; z=x+y; return (z); main() float a, b; scanf(“ %f, %f, “ ,3. 可省略被调用函数声明的二种情况,共 90 页 第 26 页,(2) 在所有函数定义之前说明,char letter( char,char); float f(float,float ); int i(float,float); main( ) . char

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

当前位置:首页 > 高等教育 > 大学课件

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