C语言教案:第6章函数.ppt
《C语言教案:第6章函数.ppt》由会员分享,可在线阅读,更多相关《C语言教案:第6章函数.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章:函第六章:函 数数6.1 概述概述6.2 定义函数定义函数6.3 函数参数和函数值函数参数和函数值6.4 函数调用函数调用6.5 宏定义宏定义6.6 变量的作用域和存储类变量的作用域和存储类6.7 函数的递归调用函数的递归调用*1/16/20231一、模块化程序设计方法一、模块化程序设计方法 6.1 概概 述述函数是程序的基本组成单位函数是程序的基本组成单位 C程序从程序从main()函数开始执行函数开始执行 用函数实现模块化程序设计的特点:用函数实现模块化程序设计的特点:(1)将大的、复杂的问题分解成若干个小)将大的、复杂的问题分解成若干个小 的、简单问题。的、简单问题。(2)将需多
2、次执行的计算)将需多次执行的计算/操作编成通用操作编成通用 的函数段。省时、省力。的函数段。省时、省力。(3)每个函数段完成一个特定的功能)每个函数段完成一个特定的功能1/16/20232二、函数分类二、函数分类 1、按定义分:、按定义分:标准函数、自定义函数标准函数、自定义函数2、按调用分:、按调用分:无参调用、有参调用无参调用、有参调用 3、按功能分:、按功能分:无值返回、有值返回无值返回、有值返回 1/16/202336.2 定义函数定义函数一、函数定义的一般形式为:一、函数定义的一般形式为:类型标识符类型标识符 函数名(函数名(形式参数表形式参数表)形式参数说明形式参数说明 函数体函数
3、体 return()1/16/20234说明:说明:1、若有值返回,则需标明类型、若有值返回,则需标明类型,并一定有并一定有return。2、若有值代入,则必须有形参表及形参说明。、若有值代入,则必须有形参表及形参说明。3、形参说明的两种形式:、形参说明的两种形式:int max(int x,int y)或或:int man(x,y)int x,y;max(x,y)int x;max(int x,y)正确正确或或:错误!错误!1/16/202354、形参说明与函数体内的说明一定要分别说明。、形参说明与函数体内的说明一定要分别说明。如:如:int max(x,y)int x,y;int z;z=
4、xy?x:y;return(z);5、函数不可嵌套定义。、函数不可嵌套定义。1/16/202366.3函数参数和函数值函数参数和函数值一、形式参数和实际参数一、形式参数和实际参数main()/*主函数主函数*/int a,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);/*a,b是实际参数是实际参数*/printf(“max=%d”,c);/*子函数子函数*/max(x,y)/*x,y是形式参数是形式参数*/int x,y;int z;z=xy?x:y;return(z);1/16/20237说说 明:明:1、形参在调用前并不占有存储单元、形参在调用前并不占有存储单元
5、2、实参可以为常量、变量或表达式、实参可以为常量、变量或表达式 3、定义函数时,必须指定形参类型。、定义函数时,必须指定形参类型。4、实参与形参要匹配、实参与形参要匹配 5、实参变量对形参变量的数据传递、实参变量对形参变量的数据传递 分为分为“值传递值传递”与与“地址传递地址传递”二、函数的返回值二、函数的返回值1、函数的返回值由、函数的返回值由return语句完成。语句完成。2、函数值与返回值类型不同,以函数类型为准。、函数值与返回值类型不同,以函数类型为准。1/16/20238三、参数传递三、参数传递1、基本数据类型作参数、基本数据类型作参数main()int a,b;printf(a=)
6、;scanf(%d,&a);printf(b=);scanf(%d,&b);swap(a,b);printf(a=%dnb=%dn,a,b);swap(int x,int y)int t;t=x;x=y;y=t;/*交换交换x和和y的值的值*/输入:输入:a=10 b=15 结果:结果:a=b=1015(单向、值传递)(单向、值传递)例:例:1/16/202392、数组元素作函数参数、数组元素作函数参数例:例:用数组元素作实参用数组元素作实参,输出输出1 5的平方。的平方。main()int a5,i;for(i=0;i5,i+)ai=i+1sq(ai);sq(int n)printf(%dn
7、,n*n);1/16/2023103、数组名作参数、数组名作参数注意:实参和形参的类型都必须是数组注意:实参和形参的类型都必须是数组 main()int a5,i;clrscr();for(i=0;i=4;i+)ai=i+1;sq(a);sq(n)int n5;int i;for(i=0;i5;i+)printf(%dn,ni*ni);1/16/202311说说 明:明:(1)调用调用sq()函数时函数时,两个数组首地址完全相同。两个数组首地址完全相同。(2)实、形参数组的类型必须一致,大小可不一致实、形参数组的类型必须一致,大小可不一致.(3)通常形参数组大小不定。通常形参数组大小不定。如:
8、如:int a10;:av(a);:av(int x):1/16/202312问题分析:问题分析:1、将数据送入数组、将数据送入数组2、将所有数据累加求和、将所有数据累加求和3、根据总成绩及人数求平均成绩、根据总成绩及人数求平均成绩4、输出结果、输出结果一维数组一维数组score中存有中存有10个学生的成绩。个学生的成绩。求平均成绩。求平均成绩。应用举例:应用举例:例例1:1/16/202313main()int score10,i;float aver(),av;printf(输入成绩:输入成绩:n);for(i=0;i10;i+)scanf(%d,&scorei);av=aver(scor
9、e);printf(“平均成绩为:平均成绩为:%6.2f,av);float aver(stu);int stu10;int i,sum=0;float a;for(i=0;i10;i+)sum+=stui;a=sum/10.0;return(a);编程如下:编程如下:1/16/202314例例2:交换两个数组元素的值。交换两个数组元素的值。main()int a2;scanf(%d,%d,&a0,&a1);swap(a);printf(%d,%d,a0,a1);swap(x);int x;int t;t=x0;x0=x1;x1=t;1/16/202315例例3:将一组学生成绩从高分到低分排序
10、。将一组学生成绩从高分到低分排序。#difine STUDENT_NUM 10main()int score11,i;void sort();printf(输入学生的成绩:输入学生的成绩:n);for(i=1;i=STUDENT_NUM;i+)scnaf(%d,&scorei);sort(score,STUDENT_NUM);printf(“从高到低的排列顺序为:从高到低的排列顺序为:n);for(i=1;i=STUDENT_NUM;i+)printf(%d,scorei);主函数:主函数:1/16/202316void sort(num,n)int num,n;int i,j,t;for(i
11、=1;in;i+)for(j=i+1;jnumi)t=numj;numj=numi;numi=t;子函数:子函数:1/16/2023176.4函数调用函数调用一、函数调用形式一、函数调用形式二、函数调用方式二、函数调用方式1、作为语句调用、作为语句调用调用无返回值函数调用无返回值函数 max(a,b);函数名函数名(实际参数表实际参数表)2、作为表达式调用、作为表达式调用 c=2*max(a,b);3、函数参数、函数参数m=max(a,max(b,c);调用有返回值函数调用有返回值函数 1/16/202318三、对被调函数的说明三、对被调函数的说明main():long f();scanf(%
12、d,&num);t=f(num);:long f(n)int n;int i;long a=1;for(i=1;i=n;i+)a*=i;return(a);调用函数求调用函数求n!。例:例:1/16/202319函数说明的一般形式为:函数说明的一般形式为:类型标识符号类型标识符号 函数名();函数名();1、在主调函数中说明被调函数的类型。、在主调函数中说明被调函数的类型。说明:说明:2、几种情况除外:、几种情况除外:(1)被调函数的返回值是被调函数的返回值是int或或char型时型时(2)被调函数的定义出现在主调函数之前时被调函数的定义出现在主调函数之前时 1/16/202320long f
13、()main():t=f();:如:如:(3)在所有函数定义之前已说明了函数的类型在所有函数定义之前已说明了函数的类型float a();main()a();.float a()如:如:1/16/202321四、函数的嵌套调用四、函数的嵌套调用不可嵌套定义,但可嵌套调用不可嵌套定义,但可嵌套调用 嵌套调用形式如下:嵌套调用形式如下:main()sub1()sub2()sub3()注意:注意:return();return();return();sub1();sub2();sub3();1/16/202322编写一个判素数的程序编写一个判素数的程序 函数应用举例:函数应用举例:例例1:例例2:编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 教案 函数
限制150内