7第七章 函数Word下载.docx
《7第七章 函数Word下载.docx》由会员分享,可在线阅读,更多相关《7第七章 函数Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
备注
【导入】
在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用,以减少重复编写程序段的工作量。
一个较大的程序一般应分为若干个程序模块,每一个模块用来实现一个特定的功能。
所有高级语言中都有子程序这个概念,用子程序实现模块的功能。
在C语言中,子程序的作用是由函数完成的。
一个C程序可由一个主函数和若干个函数构成,由主函数调用其它函数,其它函数也可以相互调用。
同一个函数可以被一个或多个函数调用任意多次。
导入
从第一章已讲过的知识点—函数组成及简单例子导入
【讲授新课】
一、函数的概念
将一个C程序分为若干模块,每个模块实现一个特定的功能,在C语言中用函数来实现模块的功能。
函数是一段完成特定任务的程序。
程序中反复使用的程序段应写成函数的形式,某些只用一次的程序段往往也写成函数形式。
一个好的方案是相同的程序段在整个程序中只出现一次。
引入函数的优点:
1.减少重复编写程序的工作量;
2.使程序便于调试和阅读。
一个C程序由一个主函数和若干个函数构成;
C的执行从main函数开始。
例:
输入三个整数,计算它们的和并输出运算结果。
voidmain()
{inta,b,c,sum;
scanf("
%d,%d,%d"
&
a,&
b,&
c);
sum=add(a,b,c);
printf("
sum=%d\n"
sum);
}
intadd(intx,inty,intz)
{ints;
s=x+y+z;
returns;
二、函数的定义
函数定义的一般形式:
[类型说明符]函数名(形式参数表)函数体
说明:
类型说明符:
指定函数值的类型。
若该项缺省,表示函数值为int型。
若函数没有值,应写作void.
函数名:
标识符,用于标识函数,并用其来调用函数。
形式参数表:
一般来说,计算函数需要多少原始数据,函数的形参表中就有多少个形参,每个形参存放一个数据。
函数体:
是一段程序,它实现函数的功能。
例1:
同上
例2:
#include<
stdio.h>
voidmain()
{
voidprintstar();
printstar();
printf(“Howdoyoudo!
\n”);
voidprintstar()/*void是类型说明符
printf(“***************\n”);
1.无参函数的定义形式
类型标识符函数名()
{
[说明部分]
语句
}
例如:
print_message()
2.有参函数的定义形式
类型标识符函数名(形式参数表列)
形式参数说明
[说明部分]
intmax(intx,inty)
{intz;
z=x>
y?
x:
y;
returnz;
}
3.空函数的定义形式
类型标识符函数名(){}
例如:
dummy(){}
特点:
调用后什么也不做。
用处:
建立程序结构,在需要时补充功能。
三、函数参数
1.形式参数和实际参数
形式参数:
在定义函数时函数名后面括弧中的变量名,简称形参。
实际参数:
在调用函数时函数名后面括弧中的表达式,简称实参。
关于参数的几点说明:
对每个形参必须指明其名字和数据类型。
实参必须有确定的值,可以是常量,变量或表达式。
实参与形参的类型个数应一致。
实参对形参的数据传递是值传递,即单向传递,只由实参传递给形参,反之不可。
函数调用结束后,只有形参单元被释放,实参单元中的值不变。
intsum(intx,inty);
inta,b,c,d,s1,s2;
%d%d"
b);
s1=sum(a,b);
s1=%d\n"
s1);
c,&
d);
s2=sum(c,d);
s2=%d\n"
s2);
intsum(intx,inty)
ints;
s=x+y;
四、函数的返回值
定义:
通过函数调用使主调函数得到一个确定的值,称为函数的返回值。
2.函数的返回值语句return语句
一般形式:
return(函数返回值);
或return函数返回值;
功能:
函数体语句执行结束后,使函数保存计算结果并回到程序原来的位置继续计算。
函数返回值是有确定值的常量、变量或表达式。
⑴return后面的值可以是一个表达式,例如:
x:
y;
return(z);
⑵一个函数中可以有多个return语句,但是一次
函数执行只能执行其中的一个。
当执行到某个
return语句时,则终止函数执行,并带回函数值。
intmax(inta,intb)
if(a>
b)returna;
elsereturnb;
⑶若函数体内没有return语句,就一直将函数执行
完,再返回调用函数,有一个不确定的值带回。
⑷return后面可以无“返回值”(即return;
),则
该return语句只起到终止函数执行,返回主调函数的作用。
3.函数值的类型
函数定义时应该指定函数的类型(即函数值的类型),应该与return语句的类型一致。
⑴凡不加类型说明的函数,一律自动按整型处理。
⑵如果函数类型和return语句的类型不一致,以函数类型为准。
对数值型数据,可以自动进行类型转换。
既函数类型决定返回值的类型。
⑶如果函数不返回值,可以将函数定义为“无类
型”void(或称“空类型”)。
五、函数调用的具体方式
1.函数语句:
(把函数调用作为一个语句)。
函数名(实际参数表);
使用情况:
这种方式常用于调用一个可以忽略返回值或没有返回值的函数,只要求函数完成一定的操作。
printstar();
2.函数表达式:
(函数调用出现在一个表达式中)
变量名=函数表达式
这种表达式称为函数表达式。
这时要求函数带回一个确定的值以参加表达式的运算。
c=3+max(a,b);
1.首先被调用函数必须是已存在的函数,如用户自定义函数或库函数。
2.如果使用库函数,需要在文件的开头用#include命令将需要的库函数的头文件包含到文件中。
用函数计算浮点数x的n次方,其中n为int型,n>
=0
doublepower(doublex,intn)
doublep;
inti;
for(p=i=1;
i<
=n;
i++)
p=p*x;
returnp;
六、函数说明和函数定义的区别
函数说明的作用是把函数的名字、函数类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。
函数定义是指对函数功能的确立,包括指定函数名、函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。
可省略被调用函数说明的三种情况
⑴函数的返回值为整型或字符型时,可以不进行函数说明,系统按整型处理。
⑵被调用函数定义在主调函数之前,可以不进行函数说明。
⑶如果已在所有函数定义之前,在文件的开头,在函数的外部已说明了函数类型,则在各个主调函数中不必对所调用的函数再做说明
七、例题讲解
【例】求四个整数(x,y,z,w)之间差值的最大值。
四个整数由键盘输入。
intmax(intx1,intx2,intx3)
{intmax;
if(x1>
x2)max=x1;
elsemax=x2;
if(max<
x3)max=x3;
return(max);
main()
{intx,y,z,w,m;
scanf(“%d,%d,%d,%d”,&
x,&
y,&
z,&
w);
m=max(x-y,y-z,z-w);
/*调用求3个整数中最大数的函数*/
printf(“max=%d\n”,m);
【例】编一个程序,将整型数组中最大数与第一个数交换。
整型数组在主函数中由键盘输入。
{voidf();
inta[10],i;
for(i=0;
10;
i++)scanf(“%d”,&
a[i]);
f(a);
i++)printf(“%d”,a[i]);
voidf(intb[])
{intmax,max_i,i;
max=b[0],max_i=0;
for(i=1;
b[i]){max=b[i];
max_i=i;
max=b[0],b[0]=b[max_i],b[max_i];
return;
[板书]
[幻灯片]
[引导]
学生对函数优点的思考
[重点]
[课堂设计]
[提问]什么是形参?
什么是实参?
结合例子讲解函数的分类
可再给出一个编写函数的题目,供学生进行课堂练习。
[重点]部分程序的典型算法
重点强调函数使用中应注意的问题
【结语】
本讲对函数的概念、定义格式;
函数的形式参数、实际参数和函数的返回值做了详细的论述;
函数的优点还会在今后的编程学习中逐渐体现出来,希望同学们能很好地领会运用。
【思考与练习】
小结
[幻灯片]展示本课程各章节名称。
让学生了解本课程内容框架,做到心里有数。
[作业]布置课外作业,下次上课交。
八、课后小结
通过教学实践,本讲内容较为琐碎,部分学生对概念的理解还需进一步通过例子理解领悟,今后的教学中要进一步以例引点进行讲解。