C语言程序设计第11讲 (函数)

上传人:zw****58 文档编号:56933766 上传时间:2018-10-17 格式:PPT 页数:42 大小:490KB
返回 下载 相关 举报
C语言程序设计第11讲 (函数)_第1页
第1页 / 共42页
C语言程序设计第11讲 (函数)_第2页
第2页 / 共42页
C语言程序设计第11讲 (函数)_第3页
第3页 / 共42页
C语言程序设计第11讲 (函数)_第4页
第4页 / 共42页
C语言程序设计第11讲 (函数)_第5页
第5页 / 共42页
点击查看更多>>
资源描述

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

1、第十讲,Begin:,第七章 函数,函数概述 函数的分类与定义 函数调用的一般形式 函数的参数 函数的返回值 数组作为函数参数,7.1 函数概述,function 函数 也可以说是 :功能 就是具有一定功能的代码段,到现在为止,我们都是用主函数中的代码完成一定的功能,函数,7.1 函数概述,C语言规定:可以把程序中的不同的功能写成不同的函数 即:C语言程序可以由不同功能的函数组成,函数,7.1 函数概述,函数组成程序的例子,int main() printstar( );print_message( );printstar( );return 0; ,#include “stdio.h”voi

2、d printstar( ) printf(“*n”);void print_message( ) printf(“How do you do?n”);,printstar和print_message就是两个函数,7.1 函数概述,print_message函数的功能输出一行信息How do you do?,printstar的功能是输出一排 ”*”,main是主函数,首先执行main,7.1 函数概述,一个C程序由一个或多个函数组成,但至少有一个主函数(main函数);main函数是程序执行的入口,可置于程序的任何位置。,C语言语法规范:,函数的分类:,7.1 函数概述,从函数间的调用关系;

3、主调函数,被调函数,从函数间数据传送的关系分为:有参函数、无参函数、有返回值函数、无返回值函数; (接下来详细讲),从用户的观点分为:C编译系统提供的标准库函数和用户自定义函数;,类型符 函数名称()数据说明语句可执行语句 ,7.2.2 无参函数的定义,7.2 函数定义的一般形式,printstar( )和print_message ( )都是无参函数,类型符 函数名称(类型 形参1 , ) 数据说明语句可执行语句 ,7.2.3 有参函数的定义,7.2 函数定义的一般形式,函数定义的一般形式举例:,float sum (float x, float y )float z ;z = x + y

4、; return z ;,7.2 函数定义的一般形式,函数定义的一般形式说明:,(1) float sum (float x , float y ) float z ;z = x + y ; return z ;,类型说明符: 指明函数的类型,函数的类型是指函数的返回值的类型,函数返回值所具有的数据类型的种类与变量相同。,7.2 函数定义的一般形式,省略时则默认为int型。若明确表示函数 “不带回值“,可以用 “ void “ 作类型符,称“无类型“或称“空类型“。,float sum (float x , float y ) float z ;z = x + y ; return z ;,函

5、数名:通常是一个标识符,在一个程序中除了主函数外其余函数的名字可以任意取,但应有意义。“()“ 函数标志。,7.2 函数定义的一般形式,float sum ( float x , float y )float z ;z=x+y;return z ;,参数表( 形参表 ):函数定义时的参数称为形式参数,形式参数彼此间用逗号分隔。形式参数省略时称无参函数,但此时函数名后的圆括号不能省。形参说明是用来指明各个形式参数的类型,它随形参的存在而存在。,7.2 函数定义的一般形式,float sum (float x , float y ) float z ;z=x+y; return z ;,函数体:函

6、数中最外层一对花括弧“ “括起来的内容,它由若干个数据说明语句和可执行语句组成,决定函数要实现的功能、完成的任务。函数体内若无任何语句时,为空函数。,7.2 函数定义的一般形式,格式二 : 类型符 函数名称() ,7.2.4 空函数的定义,7.2 函数定义的一般形式,void dummy() ,实参(实际参数)是函数调用时调用函数传送给被调用函数参数的实际值。 实参可以是常量、变量和表达式,实参必须有确定的值。 例如: fabs( -2 ); putchar( c );sqrt((x*x+2)*(y+z);,7.3.1形式参数与实际参数,7.3 函数的参数和函数的值,形参(形式参数)是函数定义

7、时,参数表中的参数。形式参数只能是变量,数组等。在函数定义时,参数表中的形参并没有具体的值,系统也不为其分配存储单元。,7.3 函数的参数和函数的值,例如:int max( int x, int y ) int z;z=xy?x:y;return z; ,例 形参和实参的运用,7.3 函数的参数和函数的值,int max( int x, int y ) int z;z=xy?x:y;return z; void main() int a,b,c;scanf(“%d%d”, ,7.3.2 函数的返回值:当被调用函数在完成一定的功能后,可以将处理的结果返回到调用函数。,7.3 函数的参数和函数的值

8、,7.3.2函数的返回值 方式:return 语句 作用:将表达式的值传给调用函数,并把控制权转向调用函数实现函数的返回。 格式: return ( 表达式 ) ;,7.3 函数的参数和函数的值,对于不需要提供返回值的函数可以直接用void作为函数类型定义,以表明此函数返回值为”无类型”或”空类型”。 void printchar() printf(“Wuhan Universityn“); main()printchar( ); ,void函数,7.3 函数的参数和函数的值,例 编写自定义函数计算:,分析:确定形参:求 c 必须知道 f 的大小,设形参为temp。确定函数:函数的返回值即为

9、c 的值,设为实型。,程序:float ftoc(float temp ) float c ; c =(5./9.)*( temp 32 ); return c ; ,7.3 函数的参数和函数的值,例 编写一个自定义函数求 n!,分析: 确定形参:求 n!必须知道 n 的大小,设形参为 n。 确定函数:函数的返回值即为 n!的值,设为实型。,程序:float factorial( int n ) float x, y ;for ( x=y=1.0; x=n; x+ )y *= x ;return y ; ,7.3 函数的参数和函数的值,7.4 函数的调用,7.4.1函数调用的一般形式是:函数名

10、(实参表列),说明:实参与形参的个数相等、类型相同、顺序一致,呈一一对应的关系。实参的求值顺序不确定,与所用系统有关。实参应有确定的值。,函数调用时,需要注意的几点: C语言参数传递时,一般采用传值方式,把各个实参值分别顺序对应传给形参。被调函数执行中形参值的变化不会影响主调函数中实参变量的值。函数调用也是一种表达式,其值就是函数的返回值。,7.4 函数的调用,自定义函数:float factorial (int n ) float x, y ;for( x=y=1.0; x=n; x+)y *= x ;return y ; ,例 调用自定义函数求 n!,调用:void main( ) int

11、 n;float f ;printf(“Please input n:”);scanf(“%d”, ,7.4 函数的调用,调用方式1)函数语句:例 printf(”);2)函数表达式:例 c=2*pow (3.5 ,6);3)函数参数:例 c=2*pow (pow (3.5,6),6);例 printf(”%fn”,pow (3.5,6);,7.4 函数的调用,例:说出下列程序的运行结果,fun2( int a, int b ) int c ; c=a*b%3 ; return c ; fun1( int a, int b ) int c ; a+=a ; b+=b ; c = fun2( a

12、, b ) ; return c*c ; main ( ) int x=11, y=19 ;printf(“%dn“, fun1( x, y) ); ,程序运行结果: 4,7.4 函数的调用,#include func(int a, int b) int c; c=a+b; return c; main( ) int x=6, y=7, z=8, r ; r=func(x-,y+,x+y), z- ); printf(“r=%dn”,r);,程序运行结果: r=21,例:说出下列程序的运行结果,7.4 函数的调用,函数原型:在定义或调用函数前,对该函数进行声明。 作用:将函数名、函数类型及形参

13、个数、类型、顺序等通知编译系统,当函数被调用时,可对实参、形参的类型、个数匹配情况进行检查。 格式:类型符 函数名(参数类型1, );或:类型符 函数名(类型符 形参1, );,7.4.3 对被调用函数的说明,7.4.3 对被调用函数的说明,自定义函数:float factorial ( int n ) float x, y ;for( x=y=1.0; x=n; x+)y *= x ;return y ; ,例 调用自定义函数求 n!,float factorial ( int n ); /* 函数原型声明*/void main( ) int n;float f ;printf(“Pleas

14、e input n:”);scanf(“%d”, ,例 判定素数。,#include “math.h“ int isprime( int ); /* 函数原型声明*/ main( ) int x=35; if ( isprime(x) printf(“%d 是素数。n“, x );else printf(“%d 不是素数。n“, x ); isprime( int a ) int i;for ( i=2 ; i=sqrt(double)a); i+ )if ( a%i = 0) return 0 ;return 1 ; ,7.4.3 对被调用函数的说明,数组名可做实参和形参,传送的是整个数组,

15、数组作为函数的参数,7.7 数组作为函数的参数,在用数组名做函数参数时,实参和形参都应该用数组。,7.7 数组作为函数的参数,例 起泡法排序 void sort(int array10,int n) int i,j,t; for(i=0;iarrayj+1) t=arrayj; arrayj=arrayj+1; arrayj+1=t; ,数组作函数的参数举例,7.7 数组作为函数的参数,例 起泡法排序 int main() int i,a10=3,1,5,7,26,4,6,8,12,2; sort(a,10); for(i=0;i10;i+) printf(“%d “,ai); return 1; ,

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

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

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