admin 管理员组文章数量: 1184232
2024年2月18日发(作者:大气的博客模板)
隆回县职业中专学校教学、学习设计方案
专 业 科: 信息科 年级: 二 科目: C程序
方案设计: 史春水 方案审核: 备课节次:
章 节
课 题 用户自定义函数
学习内容 掌握C语言函数的定义格式和调用方法
学习重点 C语言函数的定义格式和调用方法
学习难点 C语言函数的调用
学 习 程 序
一、知识回顾 问题提出
1、想一想:C语言函数的组成结构?
2、C语言函数的调用过程?
二、自主学习 互动探究
知识点一:函数的定义
1 .无参函数的定义形式
类型标识符 函数名( )
{ 说明部分
语句 }
2. 有参函数的定义形式
类型标识符 函数名(形式参数表列)
{说明部分
语句}
方式1
函数返回值类型名 函数名(参数列表)
参数类型说明
{ 局部变量说明;
语句序列; } 如: int max(a,b)
int a,b;
方式2
函数返回值类型名 函数名(参数类型说明及参数列表)
{ 局部变量说明;
语句序列; } 如: int max(int a,int b)
3. “空函数”的定义形式
类型标识符 函数名( ) { }
【例7-1】定义符号函数sign。
int sign(x) /*函数返回值类型如未说明,默认为int,建议给出函数类型说明*/
int x; /*形式参数说明*/
{ int y; /*函数体局部变量*/
1
第7章 函数
y=x>0?1:(x==0?0:-1);
return y; /*返回函数值*/
}
知识点二:函数各部分作用:
1)函数的说明部分
函数说明部分用于描述函数的类型, 函数名, 参数表及参数类型。
(1)函数的类型说明
函数的类型即函数的返回值类型。若函数不提供返回值,则可定义其类型为: void。
例如: void putdata(int a)
(2) 函数名
函数名又称函数标识符。命名遵循C语言标识符的规定;函数名要反映函数完成的功能。
(3)参数表
参数表写在函数名后的( )内,由一个或多个变量标识符及类型标识符组成。
①参数表中的变量称为形式参数, 简称形参。
②若函数没有形参,则称为无参函数,其后“( )”不能省略。
③参数必须指定类型。形参的类型说明有两种:
方法1: int max(a,b)
int a,b;
方法2: int max(int a, int b)
2)函数体
函数体包括变量定义和执行语句序列。函数所完成的工作由函数体中一段程序实现。
Ø函数的返回值用返回语句return返回,形式:
return (返回值表达式);或 return 返回值表达式;
注意:如果函数的类型与return语句的表达式的类型不一致时, 则以函数的类型为准。返回时自动进行数据转换。
3)注意:函数不可以嵌套定义,但可以嵌套调用。
知识点三:函数的调用
函数语句的格式是:<被调函数名>([<实际参数表>])
(1)若调用无参函数,可省略实参表列,但要保留括号。
(2)实参表列中有多个参数时,要用逗号隔开。
(3)实参与形参的个数、类型应一一对应。
函数调用的方式是:函数语句调用、函数表达式调用和函数参数调用
1)函数语句。把函数作为一个语句,不要求返回值,只要求函数完成一定的操作。
printstar( );
2)函数表达式。函数出现在一个表达式中,要求带回一个确定的值参加运算。
c=2*max(a,b);
3)函数参数。函数调用的返回值作为另一次调用的实参。如: m=max(a,max(b,c));
方式1、采用函数语句形式调用函数
void max(int a,int b,int c)
{ int y;
y=(a>b)?a:b;
y=y>c?y:c;
printf("max=%dn",y);}
2
void main()
{int x,y,z,m;
scanf("%d,%d,%d",&x,&y,&z);
max(x,y,z); } /*采用函数语句形式调用函数max*/
方式2、函数表达式调用和函数参数调用
int max(int a,int b)
{ int y;
y=(a>b)?a:b;
return y;}
void main()
{ int x,y,z,m;
scanf("%d,%d,%d",&x,&y,&z);
m=max(x,y); m=max(m,z);
printf(“max=%dn”,m);/*表达式调用形式 */
m=max(x,y);
printf("max=%dn",max(m,z)); } /*函数参数调用形式*/
三、案例分析 明确新知
【例7-2】 定义函数power(x,n), 求x的n次方。
函数定义如下:
int power( int x, int n) /*被调函数*/
{ int i;
float t=1;
for(i=1;i<=n;i++)
t=t*x; /* 1*x*x*…*x 共乘n次 */
return t; } /* 返回t的值 */
main()
{ int a,b,s;
scanf("%d %d",&a,&b);
s=power(a,b);/*主调函数*/
printf("%d",s);
}
【例7-3】编写计算x的n次乘方的程序。
#include "stdio.h”
main( )
{ float x, y;
int n;
float power (float x, int n);
scanf("%f,%d", &x, &n);
y = power(x, n); printf(“%8.2f”,y); }
float power( float x, int n)
{ int i;
float t=1;
for(i=1; i<=n; i++)
t=t*x;
3
return t; }
思考:请对照例2、例3两个程序,二者在结构上有什么区别?
四、仿真演练,检测达标
1、以下正确的函数定义是( )。
A)double fun(int x , int y) B)double fun(int x ; int y)
C)double fun(int x , int y) ; D)double fun(int x,y)
2、C语言规定,函数返回值的类型是由( )决定的。
A)return语句中的表达式类型 B)调用该函数时的主调函数类型
C)调用该函数时由系统临时 D)在定义函数时所指定的函数类型
3、在如下函数调用语句:
func(rec1,rec2+rec3,(rec4,rec5));则函数调用语句中,含有的实参个数是( )。
A)3 B)4 C)5 D)语法错误
4、有如下程序:
void f(int x,int y)
{ int t;
if (x } main() { int a=4,b=3,c=5; f(a,b);f(a,c);f(b,c); printf(“%d %d,%dn”,a,b,c); } 则执行后语句的结果是( ) A)3,4,5 B)5,3,4 C)5,4,3 D)4,3,5 5、以下关于函数的叙述中正确的是( ) )每个函数都可以被其它函数调用(包括main函数) )每个函数都可以被单独编译 )每个函数都可以单独运行 )在一个函数内部可以定义另一个函数 6、有以下程序运行后的输出结果是( ) #define P 3 void F(int x){return (P*x*x);} main() { printf("%dn",F(3+5));} A)192 B)29 C)25 D)编译出错 五、课后作业 自我提高 【1】上机演练上述程序并写好实习总结。 【2】思考:函数的定义格式与调用方式在操作运行过程中要注意哪些方面的问题? 六、总结反思 1、通过学习是否对函数的定义与调用的知识点有所理解与掌握。 2、对该节内容学习过程中,你如何理解函数的定义与调用方式。 3、通过学习你是否掌握函数的组成结构。 4 隆回县职业中专学校教学、学习设计方案 专 业 科: 信息 年级: 二 科目: C程序 班级: 方案设计: 刘小华 方案审核: 备课节次: 第 节 章 节 课 题 函数的参数传递与返回值 学习内容 掌握函数调用中的数据传递方法与返回值类型的确定 学习重点 C语言函数的参数传递 学习难点 C语言函数的参数传递 学 习 程 序 一、知识回顾 问题提出 1、想一想:C语言函数的定义格式? 2、C语言函数的调用方式? 二、自主学习 互动探究 知识点一:形式参数与实际参数 形参:在定义函数时函数名后括弧中的变量名称。 实参:在调用函数时函数名后括弧中的表达式。 功能:用于主调函数和被调函数之间的数据传递。 c=max( a , b ); /* 主函数main中*/ max(int x ,int y ) /*自定义max函数*/ { int z; z=x>y?x:y; return(z); } 注意:实参与形参要在个数、类型、位置上要一一对应。 知识点二:函数参数的传递方式: (1)传值过程。传值过程是指把实参的值传递给形参作为其初始值开始运算。 实参变量和形参变量是两个不同的变量,即使名称相同,也会被分配不同的存储单元,相互之间的联系只是形参变量的初值来自于实参变量,以后的操作则各不相干。如果形参变量的值以后在被调用函数中被修改,不会影响实参变量的值。一旦结束被调函数的执行,返回到主调函数,形参则将对应的存储单元释放了,而实参仍然存在并参与主调函数以后的操作。 (2)传地址过程。在函数调用中,有时需要主调函数与被调函数共享一个变量或一批变量,即两个函数对同一存储单元进行赋值或引用操作,这种类型的参数传递被称为“传地址过程”。所以实参往往是含有取地址运算符“&”的变量地址、数组名或指针变量,形参用指针变量或数组来接收,通过地址的传递,实参与形参指向同一个存储单元或存储区域,这样,形参所指变量值的改变反过来会导致实参所指变量值的变化。 【例7-4】 编程输入两个数, 输出其中较大的。(值传送) 5 第7章 函数 #include “stdio.h” main( ) { int a, b, m; int max(int, int ); scanf(“%d,%d”, &a, &b); m = max(a, b); printf(“max=”,m);} int max(int x, int y) { int t; if (x>y) t = x; else t = y; return t; } 若程序运行时输入为: 10,5 便有输出为: 10 【例7-5】程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序:(地址传送) void sort(int a[],int n) {int i,j,t;
版权声明:本文标题:C语言第7章导学案1 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1708225679a517076.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论