C语言函数调用及定义ppt课件
合集下载
C语言函数详解PPT课件

使用库函数应注意的问题: 1、调用库函数时要用#include命令将相关的头文件包含进来。
如:调用数学函数,用#include "math.h" |<math.h> 调用输入输出函数,用#include "stdio.h" |<stdio.h>
2、库函数调用的一般形式: 函数名(参数表)
要注意函数的功能、参数的个数与类型、函数值的类型。 如:求平方根的函数sqrt的形式是:double sqrt(double x)
int mainxt(imnatvxox(,iindnttpx例y,ryi)n)空tst函ar数( )
{ }
zrie=nttxu{}>zrn;zrye=i(?ntz或xut{v{)>:r;zyony;;(ipp?dzxrr);ii:pnnyv{r;ttoiffn}i((d""tsd**tu**a**mr**(m**v**yo**(i**vd**o**函i)\\dnn)数""体));; 为}} 空
f1() { ┇
f11(); ┇
f12(); ┇ } f2() { ┇ f21(); ┇ }
f11() { ┇ } f12() { ┇ } f21() { ┇ }
2
函数的分类
从用户角度
❖标准函数(库函数):由系统提供 ❖用户自定义函数
从函数形式
❖无参函数 ❖有参函数
3
§7.1 库函数
库函数由系统提供,用户只要按照要求的格式正确调用即可。 不同的C编译系统提供的库函数有些不同。
5
§7.2 函数的定义和返回值
1. 函数定义的一般格式
现代风格:
函数返回值的类型
如:调用数学函数,用#include "math.h" |<math.h> 调用输入输出函数,用#include "stdio.h" |<stdio.h>
2、库函数调用的一般形式: 函数名(参数表)
要注意函数的功能、参数的个数与类型、函数值的类型。 如:求平方根的函数sqrt的形式是:double sqrt(double x)
int mainxt(imnatvxox(,iindnttpx例y,ryi)n)空tst函ar数( )
{ }
zrie=nttxu{}>zrn;zrye=i(?ntz或xut{v{)>:r;zyony;;(ipp?dzxrr);ii:pnnyv{r;ttoiffn}i((d""tsd**tu**a**mr**(m**v**yo**(i**vd**o**函i)\\dnn)数""体));; 为}} 空
f1() { ┇
f11(); ┇
f12(); ┇ } f2() { ┇ f21(); ┇ }
f11() { ┇ } f12() { ┇ } f21() { ┇ }
2
函数的分类
从用户角度
❖标准函数(库函数):由系统提供 ❖用户自定义函数
从函数形式
❖无参函数 ❖有参函数
3
§7.1 库函数
库函数由系统提供,用户只要按照要求的格式正确调用即可。 不同的C编译系统提供的库函数有些不同。
5
§7.2 函数的定义和返回值
1. 函数定义的一般格式
现代风格:
函数返回值的类型
《C语言函数》PPT课件

#include <stdio.h>
int sum(int a, int b)
{
a=a+b;
b=a+b;
函数被调用之前,形参和子函数中的变量
return(a);
不占内存,调用结束返回,形参所占的内存被收回.
}
实参和形参传递的是”值传递”,
void main() {
即单向传递, 只与参数相对位置有关,而与 变量名无关
void printMessage() {
printf(“Hello, world.\n”); printStar(); }
void main() {
printStar(); printMessage(); }
-
12
C语言程序设计
第 6 章 模块化程序设计--函数
函数的调用
一、函数调用一般形式
一般形式: 函数名(实参列表)
3.实参可以是常量、变量或表达式.
z=c(=x>( ya)>?bx) :?ya; :b;
因为传递过来的是具体数值.
retruertnu(rzn)(;c);
4.实参和形参类型必须一致(或可以安全转换).
} void main()
5.C语言中,实参和形参传递的是”按值传递”, {
即单向传递, 只与参数相对位置有关,而与
按生存期局部变量全局变量自动变量静态变量寄存器变量形式参数变量动态存储静态存储自动变量形式参数寄存器变量静态局部变量全局变量按变量的存放位置动态存储区静态存储区自动变量形式参数静态局部变量全局变量寄存器寄存器变量c语言程序设计模块化程序设计函数202137chenli33自定义的函数有两种
模块化程序设计
C语言(函数)ppt课件

} main() { int x=6, y=5, z;
如果x, y是字符型,则自动 进行类型转换,结果正确;
z=max(x, y);
如果x, y是短整型,则自动
printf(“%d”, z); }
进b=y行; 类型转换,结果正确;
a=x;
如果x在或参数y传是递时实数,则自动 进行类型转换,有数据丢失,
• 在被调函数内改变形参的值不会改变主调函数中 实参的值。
• 如果函数不需要修改参数的值,就采用这种调用 方式。
– 引用传递
• 主调把实参“自身”传递给被调函数的形参。 • 在被调函数内改变形参的值将改变主调函数中实
函数
参数传递
i{•ntin实mtaxc参(=ai>n=t和b?aa,形:bi;n参t b)的类型确应如;该果相x, y同是或整赋型,值则兼结容果。正 return c;
在函数调用结束后,形参所 占存储单元被释放。
函数
实参
• 实参 int max(int a, int b)
{ int c=a>=b?a:b; return c;
} main() { int a, b, c;
scanf(“%d%d”, &a, &b);
a b c=max( , );
}
实参是函数调用时主调函数 传送给被调函数的形式参数的 实际值。
void main() {
int
int
int
int a, b, c;
printf(“Input three integers: ");
scanf("%d%d%d", &a, &b, &c);
printf("Maximum is: %d\n", maximum(a, b, c));
C语言定义函数PPT课件

特点:“单向”传递
例 两数交换
…...
void swap(int x, int y)
{ int temp; temp = x;
2000
值传递
2002
x = y; y = temp;
2004
COPY 2006
}
2008
int main()
200A
{ int a,b;
(main)
5 9
(swap)
59 95 5
条件语句(if语句) 循环语句(while语句) 循环语句(for语句) 循环语句(do-while语句) 从循环中跳出(break和continue语句)
常用结构和问题
9
3.4 关系表达式/逻辑表达式/条件表达式
问题:已有机制的编程能力还很弱。
如:返回两参数中的较大值:
x>y
double dmax(double, double)
需要:
返回x
返回y
1. 比较数据大小(判断)
2. 根据判断结果决定做什么(分情 况处理)
选择结构
本节主要讨论如何描述逻辑判断,判断的结果如何确定,怎样 利用逻辑判断控制计算过程
10
1.关系运算符/关系表达式
关系运算符确定数据间是否存在某种关系。 关系表达式的结果可用于控制计算过程。
关系运算符共 6 个
18
一元运算
二元运算
算术运算符
高
> >= < <=
关系运算符
== =!
?:
条件运算符
低
=
赋值运算符
19
3.复杂条件的描述:逻辑表达式
复杂关系,如: 3≤x≤5 时 z 取值 2,否则取值 1。 用关系表达式和条件表达式描述: z = (x >= 3 ? (x <= 5 ? 2 : 1) : 1); 描述比较复杂,不太直观。 用逻辑运算符可直接描述 多个条件同时成立/多个条件之一成立 某个条件不成立等复杂条件。
例 两数交换
…...
void swap(int x, int y)
{ int temp; temp = x;
2000
值传递
2002
x = y; y = temp;
2004
COPY 2006
}
2008
int main()
200A
{ int a,b;
(main)
5 9
(swap)
59 95 5
条件语句(if语句) 循环语句(while语句) 循环语句(for语句) 循环语句(do-while语句) 从循环中跳出(break和continue语句)
常用结构和问题
9
3.4 关系表达式/逻辑表达式/条件表达式
问题:已有机制的编程能力还很弱。
如:返回两参数中的较大值:
x>y
double dmax(double, double)
需要:
返回x
返回y
1. 比较数据大小(判断)
2. 根据判断结果决定做什么(分情 况处理)
选择结构
本节主要讨论如何描述逻辑判断,判断的结果如何确定,怎样 利用逻辑判断控制计算过程
10
1.关系运算符/关系表达式
关系运算符确定数据间是否存在某种关系。 关系表达式的结果可用于控制计算过程。
关系运算符共 6 个
18
一元运算
二元运算
算术运算符
高
> >= < <=
关系运算符
== =!
?:
条件运算符
低
=
赋值运算符
19
3.复杂条件的描述:逻辑表达式
复杂关系,如: 3≤x≤5 时 z 取值 2,否则取值 1。 用关系表达式和条件表达式描述: z = (x >= 3 ? (x <= 5 ? 2 : 1) : 1); 描述比较复杂,不太直观。 用逻辑运算符可直接描述 多个条件同时成立/多个条件之一成立 某个条件不成立等复杂条件。
C语言专用版PPT--《函数》

说明:
1. 定义函数时,形参不占内存单元 ; 调用函数时,形参才分配内存单元 ; 调用结束后,形参所占内存单元被释放。 2. 实参可以是常量、变量或表达式,但必须有确 切的值。 3. 定义函数,必须指明形参类型。 4. 实参与形参类型一致。 5. 实参变量对形参变量的数据传递是“值传递 ”, 即 单向 传递。 6. 可在“形参表列”中说明形参类型。 int max( int x , int y ) { 函数体 }
第8章 函数
8.1 概述 程序结构概念 : 1)较大的程序应分为若干个程序模块 ; 2)每个模块实现单一的特定功能; 3)由主函数开始执行,主函数调用子函数; 4)子函数之间可以互相调用。
说明 : 一个源文件可由一个或多个函数组成; 一个源文件是一个编译单位; 一个 C 程序由一个或多个源文件组成。 从 main() 开始,调用其它函数后, 回到 main() 结束 ; 5. 不能嵌套定义,但可互相调用 。 6. 分类 : 1) 标准函数 和 用户自定义函数 ; 2) 无参函数 和 有参函数 。 1. 2. 3. 4.
8.3.2 函数的返回值
说明 : 1. 通过 return 语句获得返回值 ;
2. 定义函数时指定函数返回值的类型;不加类型说明
的,按整型处理。
3. 函数值的类型和 return 语句中表达式的值不一
致时,以函数类型为准。 4. 被调用函数中没有 return 语句时,带回一个不
确定的值。
5. 为了明确表示“不带回值”,可以用“ void ” 定
函数定义
函数定义是指对函数功能的确 立,包括指定函数名、函数值 类型、形参个数及类型、函数 体等。它是一个完整、独立的 程序单位。
例2: float add(x,y) float x,y; { float z; z=x+y; return(z); }
C语言函数篇讲解ppt课件

⑤
b函数结束
精选版课件ppt
20
main( ) { int x,y,sum;
x=5; y=6; sum=add(x,y); printf(“%d”,sum); }
add(int a ,int b) { int z;
z=a+fun(b); return z; } 运行结果:
41
精选版课件ppt
汉诺塔问题 ( Hanoi)
数调用任意多次。 4. 从用户角度看,函数分为两种:
① 标准函数:即库函数,由系统提供。
② 用户自定义函数:用户自己定义的。 5. 从函数形式看,函数分为两种:
①无参函数。
②有参函数。
精选版课件ppt
3
6.2 函数定义的一般形式
一 函数定义的一般形式
列表
类型标识符 函数名(类型1 形参1,类型2 形参2,…) { 声明部分 语句 }
二 说明:
1.所有函数在定义时都是互相独立的,即不能嵌套定义; 2.类型标识符:说明了函数返回值的类型,当返回值为
int时,可省略不写; 3.函数名:遵循标识符的命名规则;同一个函数中函数名
必须唯一;
精选版课件ppt
4
4.形参:只能是变量,每个形参前要有类型名;当定义的 函数没有形参时叫作“无参函数” ;
a 10 20 b
alter(a, b);
printf(“a=%d,b=%d\n”,a,b); x 1200 }
210 y
alter(int x, int y) { int t;
t=x; x=y; y=t; }
总结:形参的值发生 改变,并不能 影响实参。
精选版课件ppt
9
三 函数的返回值
b函数结束
精选版课件ppt
20
main( ) { int x,y,sum;
x=5; y=6; sum=add(x,y); printf(“%d”,sum); }
add(int a ,int b) { int z;
z=a+fun(b); return z; } 运行结果:
41
精选版课件ppt
汉诺塔问题 ( Hanoi)
数调用任意多次。 4. 从用户角度看,函数分为两种:
① 标准函数:即库函数,由系统提供。
② 用户自定义函数:用户自己定义的。 5. 从函数形式看,函数分为两种:
①无参函数。
②有参函数。
精选版课件ppt
3
6.2 函数定义的一般形式
一 函数定义的一般形式
列表
类型标识符 函数名(类型1 形参1,类型2 形参2,…) { 声明部分 语句 }
二 说明:
1.所有函数在定义时都是互相独立的,即不能嵌套定义; 2.类型标识符:说明了函数返回值的类型,当返回值为
int时,可省略不写; 3.函数名:遵循标识符的命名规则;同一个函数中函数名
必须唯一;
精选版课件ppt
4
4.形参:只能是变量,每个形参前要有类型名;当定义的 函数没有形参时叫作“无参函数” ;
a 10 20 b
alter(a, b);
printf(“a=%d,b=%d\n”,a,b); x 1200 }
210 y
alter(int x, int y) { int t;
t=x; x=y; y=t; }
总结:形参的值发生 改变,并不能 影响实参。
精选版课件ppt
9
三 函数的返回值
C语言完整函数教程PPT课件

uC标准库提供了丰富的函数集,能够完成常用的数学 计算、字符串操作、输入/输出等有用操作,程序员可 以直接使用、从而减少工作量;
12
5.1 子程序设计 5.2 函数
5.2.1 函数 5.2.2 函数的定义 5.2.3 函数的调用 5.2.4 函数原型 5.3 头文件 5.4 函数应用举例 5.5 变量作用域 5.6 变量的存储类别 5.7 内部函数和外部函数
printf("%d\t",i);
【程序演示】
16
5.2.2 函数的定义
/*函数功能:判断n是否是闰年 参数: year :要判断的年份 返回值:若是闰年,返回1,否则返回0*/
int isLeapYear(int year) {
if ( (year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0) return 1;
else return 0;
}
17
5.2.2 函数的定义
常见的程序设计错误: (1)把同一种类型的参数声明为类似于形式
float x,y,而不是float x,float y; (2)在函数内部把函数参数再次定义成局部变
量是一种语法错误;如: int sum(int x, int y) {
int x, y;//错误! return (x+y); }
18
5.2.2 函数的定义
(3)不能在一个C函数的内部定义另一个函数;
main()
{
…
int sum(int x,int y)
{ return(x+y);
不允许!
}
…
}
19
5.2.2 函数的定义
12
5.1 子程序设计 5.2 函数
5.2.1 函数 5.2.2 函数的定义 5.2.3 函数的调用 5.2.4 函数原型 5.3 头文件 5.4 函数应用举例 5.5 变量作用域 5.6 变量的存储类别 5.7 内部函数和外部函数
printf("%d\t",i);
【程序演示】
16
5.2.2 函数的定义
/*函数功能:判断n是否是闰年 参数: year :要判断的年份 返回值:若是闰年,返回1,否则返回0*/
int isLeapYear(int year) {
if ( (year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0) return 1;
else return 0;
}
17
5.2.2 函数的定义
常见的程序设计错误: (1)把同一种类型的参数声明为类似于形式
float x,y,而不是float x,float y; (2)在函数内部把函数参数再次定义成局部变
量是一种语法错误;如: int sum(int x, int y) {
int x, y;//错误! return (x+y); }
18
5.2.2 函数的定义
(3)不能在一个C函数的内部定义另一个函数;
main()
{
…
int sum(int x,int y)
{ return(x+y);
不允许!
}
…
}
19
5.2.2 函数的定义
C语言函数PPT课件

类型名 函数名() {
函数体 }
类型名 函数名(void) {
函数体 }
包包括括声声明明部部分分和 和语语句句部部分分
7.2.2 定义函数的方法
1.定义无参指 值函定的数函类数型 定义无参函数的一般形式为:
类型名 函数名() {
函数体 }
类型名 函数名(void) {
函数体 }
7.2.2 定义函数的方法
实参 a 2 3 b
形参 x 2 3 y
7.3.4. 函数的返回值
➢通常,希望通过函数调用使主调函数能得 到一个确定的值,这就是函数值(函数的返 回值) (1)函数的返回值是通过函数中的return语
定义函数时函数名后面的变量名称为“形 式参数”(简称“形参”)
主调函数中调用一个函数时,函数名后面 参数称为“实际参数”(简称“实参”)
实际参数可以是常量、变量或表达式
7.3.2 函数调用时的数据传递
2. 实参和形参间的数据传递
在调用函数过程中,系统会把实参的值传 递给被调用函数的形参
或者说,形参从实参得到一个值 该值在函数调用期间有效,可以参加被调
7.3.2 函数调用时的数据传递
先编写max函数:
int max(int x,int y) {
int z; z=x>y?x:y; return(z); }
7.3.2 函数调用时的数据传递
在max函数上面,再编写主函数
#include <stdio.h> int main() { int max(int x,int y); int a,b,c;
printf(“two integer numbers: "); scanf(“%d,%d”,&a,&b); c=max(a,b); 实参可以是常量、变量或表达式 printf(“max is %d\n”,c); }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P4
一般形式
void 函数名(void) {
函数体 }
void triangle (void) { printf(" *\n");
printf(" ***\n"); printf("*****\n"); }
void 函数名() {
函数体 } 或 void triangle ()
{ printf(" *\n");
预处理
调 函
main()
数 { printf("About to print a triangle\n");
triangle();
printf("That was it!\n");
}
函数声明(主函数前)p84(2)
告诉编译器,存在这样一个用 户自定义的函数,及它的调用 方法:名称、参数、返回值。
函数调用
不能独立运行
4
写自己的函数--用户自定义函数
void triangle (void) { printf(" *\n");
printf(" ***\n"); printf("*****\n"); }
打印
无返回值函数void
函数的作用仅仅是执行 一系列的指令
5
1.无参无返回值函数定义 p87
void triangle () {
printf(" *\n"); printf(" ***\n"); printf("*****\n"); }
8
例:sample01_04.c
/* a program to output a triangle*/
#include <stdio.h>
主 void triangle(void);
9
执行流程
#voinidc程lumd序aein<的(svtod执iido)行.h>顺#v序oinidclutrdiaen<gsletd(i)o.h>程序的书写顺序
{ 从main函数开{ 始执行,
与执行顺序有关--顺
void tr执ian行gle完();main函p数rin即tf结(" *\n");
函数经过运算,得到一个明确结果,并需要回送该结果-- 一般有参有返回值函数。例,函数cylinder()返回圆柱的体积。
函数完成一系列操作步骤,不需要回送任何运算结果--无 返回值函数:
1.无参无返回值函数 2.有参无返回值函数
3
用户自定义函数
函数定义:编制独立功能的程序 函数声明:主调函数调用前声明 函数调用:主调函数调用被调用函数 函数执行:运行被调用函数 注:
第5讲 函数 函数的定义及调用
1
主要内容
函数 无参无返回值函数 有参无返回值函数 有参有返回值函数 函数间数据传递
整数类型 整数变量的定义 整数的运算 整数的输入和输出 整数在函数间传递
用户自定义函数
P84~P95 第4章函数
2
4.2.1 函数定义
printf(" * \n"); printf(" * *\n"); printf(" * * \n"); }
Draw 绘画 Circle 圆
/*Draw intersecting lines*/ void draw_intersect(void) {
/* Use 2 \'s to print 1 \*/ printf(" / \\ \n"); printf(" / \\ \n"); printf(" / \\\n");
printf(" ***\n");
printf("*****\n");
}
6
P4
无参无返回值的函数的声明 p87
一般形式:void 函数名(void ); void triangle (void) ;
主调函数 告诉编译系统用户自定义函数的存在 编译系统在检查被调函数时要知道调用信息包括:
调用自定义函数,() 中可不包括任何内 容,但()一定要写。
被 调 函
void triangle(void) { printf(" *\n");
printf(" ***\n");
数 printf("*****\n");
}
函数定义
可放在main函数之前,也可放在main 函数的后面。但不能放在main函数的函 数体中,函数和函数之间地位是平等的, 没有嵌套关系。只有嵌套调用。
函数是指完成一个特定工作的独立程序模块。
库函数:由C语言系统提供定义。如scanf()等函数 自定义函数:用户根据需要定义。如cylinder()函数 P25 main()是一个主函数,C程序由一个main()或多个函数构成
程序中一旦调用了某个函数,该函数就会完成特定功 能,然后返回到调用它的地方。除主函数外一般函数 都不能单独运行。
完成画基本组件的函数
画一个圆 画一个横线 画一个平行线 画一个交叉线
完成画三角形的函数
画一个交叉线 画一个横线
在main函数中调用子 函数完成画小女孩
画一个圆 画三角形 画一个交叉线
12
完成画基本组件的函数
/*Draw a circle*/ void draw_c函数名”
7
P4
无参无返回值的函数的调用
一般形式:函数名();
上例:triangle();
写一个主函数,调用 “triangle ”函数,打印 图形。
#include <stdio.h> void main(void) {
void triangle();/*函数声明*/ triangle(); }
printf执(" 行***\。n");
triangle();
printf("*****\n"); }
函数的书写顺序
与执行顺序无关
函数定义若写在函数调 用之前,函数声明可省 略,但不主张。
}
10
完成画简图(女孩)的程序
打印图形
女孩 房子 男孩
11
sample01_03.c
序执行。
triang束le(执); 行。
printf(" ***\n"); 分支或循环会改变顺序
}voidtri遇行an到被gle调调()用函函数数,} ,执pr转行int向完f("执被*****\n");
{
调函数后,返vo回id调m用ain函(void)
printf数(" 的*\n调");用处,{ 继续向下