《C语言程序设计与数据结构》课件第06章函数

合集下载

C语言程序设计 第6章 函数与模块化程序设计

C语言程序设计 第6章 函数与模块化程序设计

求整数x的绝对值 求双精度实数x的绝对值 计算sin(x)的值,x的单位为弧度 计算cos(x)的值,x的单位为弧度 求ex的值 求㏑x 计算x的开方
例题
#include <stdio.h> #include <math.h> void main() { double x,y;
scanf("%lf",&x); printf("%g\n",x); y=fabs(x); printf("%g\n",y); }
s1 所指地址
返回串中字符(不计 最后的'\0')个数
四、输入输出函数
• 调用字符函数时,要求在源文件中包含下以下命令行: • #include <stdio.h>
函数原型说明
功能
返回值
int getchar(void) char *gets(char *s) int putchar(char ch)
i++; } return (m); //返回值 }
main() { printf("\n%ld",s());}
25
(2)有参函数的定义形式
long s(int n ) //类型说明符long,函数名s {
数据类型说明符 {
函数名(带类型的形式参数列表)
i=1; //变量定义语句部分 long m=1; while(i<=n)
数,当在处理复杂问题中,遇到要用这段重复性程序段时,则无 需重复编写,只需调用函数即可。
模块与函数
• 可以将一个任务划分为若干个功能模块,每一个功能模块用一个 函数来实现。功能相同的模块只编一个函数。

C语言第6章函数

C语言第6章函数

返回
6.1 函数的定义和引用 6.1.1 函数的定义
函数的定义就是创造,编制函数.函数的定义过程就是编制函数的过程. 函数的定义就是创造,编制函数.函数的定义过程就是编制函数的过程. 函数定义的格式: 函数定义的格式: [数据类型说明 函数名 [形式参数说明 [形式参数 数据类型说明] 函数名( 形式参数说明 形式参数 形式参数说明] 形式参数,] ) 数据类型说明 { 说明语句; 说明语句; 例如: 例如: 可执行语句; 可执行语句; int fun(int x, int y) return(表达式 ; 表达式) 表达式 { int z; } if(x>y)z=x; z=y; return(z); }
用来说明形式参数的数据类型. 用来说明形式参数的数据类型.
函数名的命名规则同标识符的命名规则. 函数名的命名规则同标识符的命名规则. 圆括号" 是函数运算符.圆括号不能省略. 圆括号"( )"是函数运算符.圆括号不能省略. 花括号"{ }",用来含括函数体的内容. 用来含括函数体的内容. 花括号" 是程序员根据实际使用的要求编制的程序, 是程序员根据实际使用的要求编制的程序 是实现函 数功能的主体程序. 数功能的主体程序.
《C语言程序设计》
第六章


函 数
函数是C语言程序的基本结构,可以说一个C语言程序 函数是 语言程序的基本结构,可以说一个 语言程序 语言程序的基本结构 是一个或多个函数的集合体. 是一个或多个函数的集合体. C语言为使用者提供了功能齐全,内容丰富的函数. 语言为使用者提供了功能齐全,内容丰富的函数. 语言为使用者提供了功能齐全 它包括: 函数 数学函数,字符串,字符函数, 函数, 它包括:I/O函数,数学函数,字符串,字符函数,时 转换和操作)函数,接口函数,动态地址分配函数, 间(转换和操作)函数,接口函数,动态地址分配函数, 目录函数,过程控制函数,字符屏幕和图形功能函数等 目录函数,过程控制函数,字符屏幕和图形功能函数等. 用户可以根据需要选择使用.这一类函数称为库函数. 用户可以根据需要选择使用.这一类函数称为库函数. 库函数函数的引用的方法很简单,这里不赘述. 库函数函数的引用的方法很简单,这里不赘述. 本章介绍使用者自己编制函数的定义, 本章介绍使用者自己编制函数的定义,引用及函数数 据的传递方法等问题. 据的传递方法等问题.

C语言程序设计:第6章 函数 课件教案

C语言程序设计:第6章 函数 课件教案

C语言程序设计课件教案第六章函数教学目的掌握函数的定义、函数的声明、函数的调用、函数的设计原则,能够灵活的去定义和调用函数。

教学要求1.掌握函数的定义、声明、调用掌握常量的概念与使用2.熟练掌握函数的设计原则3.熟练掌握函数形参的异常判断、函数返回值的使用重点和难点1.函数定义和使用2.形参的异常判断、函数返回值的使用教学支撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学方法讲授法、练习法、讨论法授课课时6课时教学过程一、课程引入什么是模块化?模块化有哪些特点?我们C语言中是否可以实现模块化编程?函数是完成一个个特定任务的语句集合,它能完成你所想要的某种特定任务,当你要用时,只需要调用它即可,在后续的修改或是维护过程中,只需要针对这一个进行修改即可。

作用1:减少程序的代码量作用2:代码复用作用3:使程序具有良好的结构二、函数的定义函数的定义:包括两个部分,分别是“函数头”和“函数体”。

返回值数据类型函数名(数据类型形参1,数据类型形参2,....)//函数头{//函数体(可以有多条语句)}[注意1]:函数的返回值和参数可以是任意类型,包括空类型!!当函数无返回值或无形参列表时,建议用void指明[注意2]:函数名是一种标识符,必须符合标识符的命名规则!单词首字母不大写,从第二个单词起首字母大写。

[注意3]:函数的参数可以没有,也可以有多个参数(本章最后讲解)【思考】如果源文件只有如上说是的代码可以运行吗?同学们自己尝试一下![注意4]:一个项目中必须要有一个主函数,没有主函数,程序找不到执行的入口,代码无法运行。

[注意5]:函数头要有头注释(功能,参数,返回值),函数定义不可以嵌套。

【思考】现在在上面代码的基础上添加好主函数,试试可以运行吗?[注意6]:函数如果不被调用,就不会执行。

三、函数的调用语法 : 函数名(实际参数1,实参2,...)#include <stdio.h>void printStar(void){printf("****");return ;}int main(void){printStar();//调用函数printStarreturn 0;}[注意1]:如果是A函数调用B函数,则A函数叫主调函数,B叫被调用函数在这个代码示例中,main函数就可以称为主调函数,prinfStar函数就可以称为被调函数。

C语言程序设计_06函数与编译预处理

C语言程序设计_06函数与编译预处理

注意:所有的递归问题都一定可以用非递归的算法实现,并 且已经有了固定的算法。如何将递归程序转化为非递归程序 的算法已经超出了本书的范围,感兴趣的读者可以参看有关 数据结构的文献资料。
6.5 变量的作用域与存储类别 6.5.1 变量的作用域 在程序中能对变量进行存取操作的范围称为变量的作用域。 根据变量的作用域不同,变量分为局部变量和全局变量。 1.局部变量 在一个函数体内或复合语句内定义的变量称为局部变量。局 部变量只在定义它的函数体或复合语句内有效,即只能在定 义它的函数体或复合语句内部使用它,而在定义它的函数体 或复合语句之外不能使用它。
(3)将分解后的每个小问题作为一个整体,描述用这 些较小的问题来解决原来大问题的算法。 由第(3)步得到的算法就是一个解决原来问题的递归 算法。由第(1)步将问题的规模缩到最小时的条件就 是该递归算法的递归结束条件。 【例6.7】利用递归函数打印如图6-7所示的数字金字塔 图形。
图6-7 数字金字塔
2.函数体 在函数定义的最外层花括号括起来的部分称作函数体。在函 数体的前面部分可以包含函数体中程序对象的声明和变量定 义,声明和定义之后是描述函数功能的语句部分。 函数体中的RETURN语句用于传递函数的返回值。一般格式 为: RETURN 表达式;
说明: (1)一个函数中可以有多个RETURN语句,当执行到某个 RETURN语句时,程序的控制流程返回调用函数,并将 RETURN语句中表达式的值作为函数值带回。 (2)若函数体内没有RETURN语句,就一直执行到函数体 的末尾,然后返回调用函数。这时也有一个不确定的函数值 被带回。 (3)若不需要带回函数值,一般将函数定义为VOID类型。 (4)RETURN语句中表达式的类型应与函数返回值的类型 一致。不一致时,以函数返回值的类型为准。 3.空函数 C语言还允许函数体为空的函数,其形式为: 函数名() {} 调用此函数时,什么工作也不做。

C语言程序设计:第6章函数课件教案

C语言程序设计:第6章函数课件教案

C语⾔程序设计:第6章函数课件教案C语⾔程序设计课件教案第六章函数教学⽬的掌握函数的定义、函数的声明、函数的调⽤、函数的设计原则,能够灵活的去定义和调⽤函数。

教学要求1.掌握函数的定义、声明、调⽤掌握常量的概念与使⽤2.熟练掌握函数的设计原则3.熟练掌握函数形参的异常判断、函数返回值的使⽤重点和难点1.函数定义和使⽤2.形参的异常判断、函数返回值的使⽤教学⽀撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学⽅法讲授法、练习法、讨论法授课课时6课时教学过程⼀、课程引⼊什么是模块化?模块化有哪些特点?我们C语⾔中是否可以实现模块化编程?函数是完成⼀个个特定任务的语句集合,它能完成你所想要的某种特定任务,当你要⽤时,只需要调⽤它即可,在后续的修改或是维护过程中,只需要针对这⼀个进⾏修改即可。

作⽤1:减少程序的代码量作⽤2:代码复⽤作⽤3:使程序具有良好的结构⼆、函数的定义函数的定义:包括两个部分,分别是“函数头”和“函数体”。

返回值数据类型函数名(数据类型形参1,数据类型形参2,....)//函数头{//函数体(可以有多条语句)}[注意1]:函数的返回值和参数可以是任意类型,包括空类型!!当函数⽆返回值或⽆形参列表时,建议⽤void指明[注意2]:函数名是⼀种标识符,必须符合标识符的命名规则!单词⾸字母不⼤写,从第⼆个单词起⾸字母⼤写。

[注意3]:函数的参数可以没有,也可以有多个参数(本章最后讲解)【思考】如果源⽂件只有如上说是的代码可以运⾏吗?同学们⾃⼰尝试⼀下![注意4]:⼀个项⽬中必须要有⼀个主函数,没有主函数,程序找不到执⾏的⼊⼝,代码⽆法运⾏。

[注意5]:函数头要有头注释(功能,参数,返回值),函数定义不可以嵌套。

【思考】现在在上⾯代码的基础上添加好主函数,试试可以运⾏吗?[注意6]:函数如果不被调⽤,就不会执⾏。

三、函数的调⽤语法 : 函数名(实际参数1,实参2,...)#includevoid printStar(void){printf("****");return ;}int main(void){printStar();//调⽤函数printStarreturn 0;}[注意1]:如果是A函数调⽤B函数,则A函数叫主调函数,B叫被调⽤函数在这个代码⽰例中,main函数就可以称为主调函数,prinfStar函数就可以称为被调函数。

C语言程序设计PPT课件第6章

C语言程序设计PPT课件第6章

[例6.9]求Fibonacci数列的前40项。每行输出4项。 main() { long t1, t2, t3; int i; t1=t2=1; printf("%10ld%10ld", t1,t2); for(i=3; i<=40; i++) { t3=t1+t2; printf("%10ld", t3); if(i%4==0) printf("\n"); t1=t2; t2=t3; } getch(); }
}
printf("%d",sum);
}
§6.3 while语句
一般形式:while (表达式) 语句
作用:实现“当型”循环。
当“表达式”非0(真)时,
假 表达式 真
当P为真
执行while语句中的内嵌“语句”。语句
A
“语句”是被循环执行的程序,称
为“循环体”。
特点:先判“表达式(条件)”,后执行语句。
[例6.10]求Fibonacci数列的前40项。每行输出4项。
main() { long t1, t2;
int i; t1=t2=1; for(i=1; i<=20; i++)
{ printf("%10ld%10ld", t1,t2); if(i%2==0) printf("\n"); t1=t1+t2; t2=t1+t2;
若为假,转第(5)步。 (3)求表达式3。 (4)转第(2)步。 (5)执行for语句下面的语句。
“表达式2”,循环条件(i<=100)。
for (i=1;i<=100;i++) sum = sum + i;

C语言程序设计第六章函数


6.1 理论知识
局部变量说明
(1)主函数main( )中定义的局部变量,只能在主函数中使用,其 他函数不能使用。同时,主函数中也不能使用其他函数中定义的局 部变量。因为主函数也是一个函数,与其他函数是平行关系。 (2)形参变量也是局部变量,属于被调函数;实参变量则是主 调函数的局部变量。 (3)允许在不同的函数中使用相同的变量名,它们代表不同的 对象,被分配不同的存储单元,互不干扰,也不会发生混淆。
6.1 理论知识
函数声明:原则是先声明再使用
(1)调用函数时,应先声明再使用,如6.1
(2)调用库函数时,一般需要在程序的开头用 “#include”命令。 (3)如果被调函数的定义出现在主调函数的定 义之前,则不需要对函数声明。
6.1 理论知识
如[例6.1]可改为: int max(int x,int y) //定义max()函数 { int z; if(x>y) z=x; else z=y; return(z); //返回函数值 } main() { int a,b,result; printf("请输入两个整数:"); scanf("%d,%d",&a,&b); result=max(a,b); printf("两数之中较大的数是:%d\n",result); }
(4)在复合语句中也可以定义变量,其作用域只限于复合语句 范围内。
6.1 理论知识
p89
全局变量:在一个函数(包括main( )函数)外部定义的 变量,又称外部变量。
全局变量不属于任何一个函数,其作用域从定义的位 置开始,到整个源程序结束。全局变量可被作用域内 的所有函数直接引用。
6.1 理论知识

电大C语言程序设计 第6章 函数


第6章 函数 6.3 变量作用域 auto和register修饰的局部变量若不显示初始化, 其值是不确定的;static修饰的局部变量若不显示 初始化,自动初始化为0。 函数定义中的形式参数也是局部变量,具有块作 用域。 静态生存期:在整个程序运行期间不会死亡的生 存期称之。 局部生存期:在程序运行离开其作用域立即死亡 的生存期称之。
第6章 函数 6.3 变量作用域 4. 块作用域:只在函数体或语句块中有效的作用 域称之。 局部变量:在函数体或语句块中定义的变量称为 局部变量。局部变量具有块作用域。 局部变量可用static、auto或register修饰。缺省为 auto修饰。 static修饰的局部变量在“堆”中分配存储空间; auto修饰的局部变量在“栈”中分配存储空间; register修饰的局部变量在“寄存器”中分配存储 空间。

第6章 函数 6.3.2 程序举例 程序6_5 程序6_6 程序6_7 程序6_8 程序6_9 6.4 递归函数 递归函数:即自调用函数。在函数体内部直接或 间接地自己调用自己。 例:求n! long fact(int n) { if(n==1) return 1; return fact(n-1)*n; }
第6章 函数 6.1 函数定义 3. 有关函数定义的几点说明 (1) 函数原型语句 函数原型又称函数声明,由函数返回类型、函数 名和参数表组成。即: 返回类型 函数名(参数表); //以;号结尾 函数原型中的参数表可以只包含参数的类型。


第6章 函数 6.1 函数定义 3. 有关函数定义的几点说明 1) 函数原型语句 函数必须先有原型(或定义)后调用。 函数定义包含函数原型。 若函数定义于函数原型之前,则不必给出函数原型。 若函数定义于函数原型之后,则必须给出函数原型。 一般,我们不将函数原型、函数调用和函数定义放在同一 程序文件,而是分别保存。函数原型归入头文件,函数定 义归入程序文件,函数调用归入主程序文件。从而形成项 目的多文件结构。

C语言课件第六章函数2.0

第6页
解的相似子结构 递归的条件:
终止条件
递归应用实例:
求阶乘; 汉诺塔问题; 用辗转相除法求两个整数的最大公约数
第7页
例6.7 用递归法求一个整数的阶乘。
递推公式:n!=
1
n=0,1
n*(n-1)! n>1
根据这个递推公式,写出如下的求阶乘函数:
long fact (int n) {
if(n==1) return 1;
类似函数头,但是没
有类型说明,参数也
#define 宏名(参数表) 字符串 不要类型说明
展开置 换规则
按照#define命令行中指定的“字符串”从左到右进行置 换(扫描置换)。如果串中包含宏定义中的形参,则将程 序中相应的实参代替形参,其它字符原样保留,形成了替 换后的字符串。
举例
#define S(a,b) a*b area=S(3,2);
auto int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c); } void main() { int a=2,i; for (i=0;i<3;i++)
printf(“%4d”,f(a)); }
789
思考:没有static和 有static程序的输出
分别是什么?
777
第15页
如何运行一个多文件的程序
模块的组织:函数的定义写到 .cpp 文件中;函数的声明、全局 变量的定义一般写到 .h 文件中。
步骤:
1、新建一个VC工程; 2、在菜单栏中选择“工程|添加到工程”,在弹出的对话框中 选择源文件或头文件,添加到工程中; 3、如有必要,在适当的位置合理的声明变量和函数; 4、编译、链接、执行即可。 注:VC中工程文件的后缀是.dsw 。

C语言程序设计课件第06章数组、指针与字符串.ppt

pa+i)就是a[i]. –a[i], *(pa+i), *(a+i), pa[i]都是等效的。 –不能写 a++,因为a是数组首地址(是常量)。
17
指针数组
指 数组的元素是指针类型 针 例:Point *pa[2];
由pa[0],pa[1]两个指针组成
*i_pointer 3i
2000
9
指针变量的初始化
指 语法形式 存储类型 数据类型 *指针名=初始地址; 例:int a , *pa=&a;
针 注意事项
➢用变量地址作为初值时,该变量必须在指针初始化 之前已说明过,且变量类型应与指针类型一致。
➢可以用一个已赋初值的指针去初始化另一个指针变 量。
组 ➢ 数组下标从零开始。 ➢ 下标必须是整形表达式。 ➢ 数组元素可以在定义时直接给出初始值列表。 ➢ 数组元素作函数参数同简单变量作函数参数。 ➢ 数组名作函数参数传递的是地址值。 ➢ 二维数组在内存中按行存放。
4
对象数组
数 声明:
类名 数组名[元素个数];
组 访问方法:
数组名[下标].成员名
与!=的关系运算。

– 指向不同数据类型的指针,以及指针与一
般整数变量之间的关系运算是无意义的。
– 指针可以和零之间进行等于或不等于的关
系运算。例如:p==0或p!=0
16
指向数组元素的指针
指 声明与赋值
例:int a[10], *pa;
针 pa=&a[0]; 或 pa=a;
通过指针引用数组元素
C++语言程序设计
第六章 数组、指针与字符串
本章主要内容
数组 指针 动态存储分配 深拷贝与浅拷贝 字符串
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计与数据结构
6.1.1函数分类
从函数定义的角度看,函数可分为库函数和用户 定义函数两种 C语言的函数兼有其它语言中的函数和过程两种 功能,从这个角度看,又可把函数分为有返回值 函数和无返回值函数两种。 从主调函数和被调函数之间数据传送的角度看又 可分为无参函数和有参函数两种。 C语言提供了极为丰富的库函数
C语言程序设计与的参数分为 形参 和 实参 两种,作用是实现数 据传送。 形参出现在函数定义中,只能在该函数体内使用。 发生函数调用时,调用函数把实参的值复制1份, 传送给被调用函数的形参,从而实现调用函数向被 调用函数的数据传送。
C语言程序设计与数据结构
例 6.2 实参对形参的数据传递(无返回值)。 1 #include <stdio.h> 2 void main() 3{ 4 void s(int n); /*说明函数*/ 5 int n=100; /*定义实参n,并初始化*/ 6 s(n); /*调用函数*/ 7 printf("n_s=%d\n",n); /*输出调用后实参的值,便于进行比较*/ 8} 9 void s(int m) 10 { 11 int i; 12 printf("m=%d\n",m); /*输出改变前形参的值*/ 13 for(i=m-1;i>=1;i--) 程序运行结果为: 14 m=m+i; /*改变形参的值*/ m=100 15 printf("m=%d\n",m); /*输出改变后形参的值*/ m=5050 16 } n_s=100
C语言程序设计与数据结构
6.2函数的定义
6.2.1函数定义的一般形式 1.任何函数(包括主函数main())都是由函数说明和函数体两部分组成。 根据函数是否需要参数,可将函数分为无参函数和有参函数两种。 函数返回值类型 函数名(形式参数表) { 函数体 } 定义说明: 函数名:是符合标识符命名规则的任何合法标识符。 形参表是用逗号分隔的一组变量说明,其格式如下: 数据类型1 形参1,数据类型2 形参2,……,数据类型n 形参n 函数体是实现函数功能的全部语句。 函数类型有两种情况:当函数有具体的返回值时,函数类型为函数值的数 据类型;当函数只是完成特定的操作,而没有具体的返回值时,函数类 型为void型。函数的类型可以省略,当不指明函数类型时,系统默认为 int型。
C语言程序设计与数据结构
例6.3 实参对形参的数据传递(有返回值)。 1 #include <stdio.h> 2 void main() 3{ 4 int max(int x,int y); 5 int a,b,c; 6 scanf("%d,%d",&a,&b); 7 c=max(a,b); 运行情况如下: 8 printf("Max is %d\n",c); 输入:5,7 输出:max is 7 9} 10 int max(int x,int y) 11 { 12 int z; 13 z=x>y?x:y; 14 return z; 15 }
C语言程序设计与数据结构
还应该指出的是,在C语言中,所有的函数定 义,包括主函数main在内,都是平行的。 也就是说,在一个函数的函数体内,不能再定 义另一个函数,即不能嵌套定义。但是函数之间允 许相互调用,也允许嵌套调用。习惯上把调用者称 为主调函数。 函数还可以自己调用自己,称为递 归调用。main 函数是主函数,它可以调用其它函数, 而不允许被其它函数调用。 因此,C程序的执行总是从main函数开始,完 成对其它函数的调用后再返回到main函数,最后由 main函数结束整个程序。一个C源程序必须有,也 只能有一个主函数main。
C语言程序设计与数据结构
6.2.3函数的返回值
C语言的函数兼有其它语言中的函数和过程两种功能,从这个角度看, 又可把函数分为有返回值函数和无返回值函数两种。 1.函数返回值与return语句 函数的返回值,是通过函数中的return语句来获得的。 (1)return语句的一般格式: return ( 返回值表达式 ); (2)return语句的功能:返回调用函数,并将“返回值表达式”的值 带给调用函数。 注意:被调用函数中无return语句,并不是不返回一个值,而是一个不 确定的值。为了明确表示不返回值,可以将函数类型定义为“void”, 表示为“无(空)类型”。 2.函数类型 在定义函数时,对函数类型的说明,应与return语句中返回值表达式的 类型一致,也就是说函数的类型是函数返回值的类型,它可以是我们已 经学习过的int、char、float、double中的任意类型,也可以是我们要在 后面学习的构造数据类型和指针类型。如果不一致,则以函数类型为准。 如果缺省函数类型,则系统一律按整型处理。
C语言程序设计与数据结构
为什么使用函数? 第一,使用函数可以省去写重复代码。如果程序 中要多次使用某种特定的功能,那么只需编写一 个合适的函数即可。程序可以在任何需要的位置 调用该函数,并且同一个函数可以在不同的程序 中调用,就像在很多程序中使用printf()函数一 样。 第二,即使某种功能在程序中只使用一次,将其 以函数的形式来实现也是必要的,因为函数使得 程序更加模块化,从而有利于程序的阅读、修改 和完善。
C语言程序设计与数据结构
对文件包含命令还要说明以下几点:
1.包含命令中的文件名可以用双引号括起来,也可以用尖括号 括起来。例如以下写法都是允许的: #include "stdio.h" #include <math.h> 但是这两种形式是有区别的:使用尖括号表示在包含文件 目录中去查找(包含目录是由用户在设置环境时设置的),而 不在源文件目录去查找; 使用双引号则表示首先在当前的源文件目录中查找,若未 找到才到包含目录中去查找。用户编程时可根据自己文件 所在的目录来选择某一种命令形式。 2.一个include命令只能指定一个被包含文件,若有多个文件要 包含,则需用多个include命令。 3.文件包含允许嵌套,即在一个被包含的文件中又可以包含另 一个文件
C语言程序设计与数据结构
例 6.1 定义一个函数,用于求两个数中的大数。 1 #include <stdio.h> 2 int max(int n1, int n2) /*定义一个函数max()*/ 3{ 4 return (n1>n2?n1:n2); 5} 6 void main() 7{ 8 int max(int n1, int n2); /*函数说明*/ 9 int num1,num2; 10 printf("input two numbers:\n"); 11 scanf("%d%d", &num1, &num2); 12 printf("max=%d\n", max(num1,num2)); 13 }
C语言程序设计与数据结构

例6.4 求参数n的平方 double sqare(double n) { return n * n; } 下面这个函数用来判断参数n是否为正数 int isPositive(int n) { ¨ if(n>0) ¨ return 1; ¨ else ¨ return 0; } 注意函数isPositive,虽然没有错,但显得很笨拙,更好的方法是: int isPositive(int n) { return n>0; } 或 int isPositive(int n){ return (n>0)?1:0 }
C语言程序设计与数据结构
第8,9行为说明语句部分,用来说明(定义、申明)函数和 变量。第10-12行为执行语句部分。 2.说明 (1)函数不允许嵌套定义。 在C语言中,所有函数(包括主函数main())都是平行的。一 个函数的定义,可以放在程序中的任意位置,即放在主函 数main()之前或之后都可以。但在一个函数的函数体内,不 能再定义另一个函数,即不能嵌套定义。 (2)空函数──既无参数、函数体又为空的函数。其一般形 式为: 函数类型 函数名(void){ }
C语言程序设计与数据结构
事实上,一个具备一定规模C程序往往由多个函数 组成。其中必有一个名为main的主函数,由main来 调用其他函数。必要的话,其他函数还可以调用另 外的函数。同一个函数可以被多个函数调用一次或 者多次。 从总的框架来看,是将一个大的计算任务划分为一 个一个小的任务,这些小的任务均由函数来完成。 而函数既可以是C的标准库函数,也可以是用户自 定义函数。 注意:函数必须先定义,后调用。
第六章
函数
C语言程序设计与数据结构
总体要求:
掌握自定义函数的一般结构及定义函数的方法; 掌握形参、实参、函数原型等重要概念; 掌握函数声明、函数调用的一般方法; 了解局部变量、全局变量的概念; 掌握auto型和static型局部变量的特点和用法。
C语言程序设计与数据结构
学习重点:
区分函数定义、函数说明的区别; 理解参数传递的意义。
C语言程序设计与数据结构
说明: (1)实参可以是常量、变量、表达式、函数等。无论实参 是何种类型的量,在进行函数调用时,它们都必须具有确 定的值,以便把这些值传送给形参。因此,应预先用赋值、 输入等办法,使实参获得确定的值。 (2)形参变量只有在被调用时,才分配内存单元,调用结 束后,即刻释放所分配的内存单元。因此,形参只有在该 函数内有效。调用结束后,则不能再使用该形参变量。 (3)实参对形参的数据传送是单向的,即只能把实参的值 传送给形参,而不能把形参的值反向地传送给实参。 (4)实参和形参占用不同的内存单元,即使同名也互不影 响。 (5)实参与形参的类型应当相同或赋值兼容。
C语言程序设计与数据结构
在高级语言程序设计中往往将一个较大的程序分解 成若干较小的、功能单一的程序模块来完成特定的 功能,称其为子程序。通过对这些子功能的组织和 调用,来实现整个程序的功能要求。C语言中,这 些功能比较独立的子程序成为函数。函数是C语言 程序的一种基本组成部分,C语言程序的功能是通 过函数之间的调用来实现的,一个完整的C语言程 序可由一个或多个函数组成,每个函数都有一个函 数名。
相关文档
最新文档