C语言程序设计第7章 函数PPT课件

合集下载

C语言程序设计第四版_谭浩强7章

C语言程序设计第四版_谭浩强7章

➢函数的功能
return z; }
函数体
函数首部,不是语 句,行尾无分号
精选课件ppt
函数的返回值,类 型与首部定义一致14
函数的定义
关于函数类型的说明
无返回值的函数类型为void; 有返回值的函数,其类型根据返回值 类型决定;省略类型时默认为int(建议 不要省略)
精选课件ppt
15
函数的调用
int main( )
{ int max(int a[ ],int n);
int x[6],i;
for(i=0;i<=5;i++)
scanf("%d",&x[i]);
printf("max=%d",max(x,6));
return 0;
}
实参为数组名
精选课件ppt
int max(int a[ ],int n) { int m,i; m=a[0]; for (i=1;i<n;i++)
float fac; fac=1; for(i=1;i<=n;i++)
fac=fac*i; return fac;
printf("c="); scanf("%d",&c);
}
sum=factorial(a)+factorial(b)+factorial(c);
printf("%d!+%d!+%d!=%.0f",a,b,c,sum);
函数1 函数2 函数3
函数1 函数2
精选课件ppt
34
变量作用域——局部变量和全局变量

C语言第七讲 函数(2)

C语言第七讲 函数(2)
变量类型决定了变量在内存中所占的字节数 及数据的表示形式,并且决定了变量起作用的代 码范围,也决定了系统在什么时间、什么空间为 变量分配或释放内存单元。这是变量的生存期和 作用域。
21
一、变量的存储空间分配概念
变量定义位置 变量的作用域 空间 (变量的使用范围)
变量的存储类别变量的生存期 时间
26
局部变量
二、变量的作用域——
局部变量(local variable)与全局变量(global variable)

void swap( ) { int t,x,y; t=x;x=y;y=t; } main() { int x=3,y=5; printf("x=%d,y=%d\n",x,y); swap( ); printf("x=%d,y=%d\n",x,y); }
斐波那契数列的递归方法实现。计算并输出斐波 那契数列的前7个数据。
1 当n =0, 1时
fib(n) =
fib(n-1)+ fib(n-2) 当n > 1时
int fib(int n) { if(n==0||n==1) return 1; else return fib(n-1)+fib(n-2); }
10
void main() { int n; for(n=11;n<=99;n++) if( absoluteprime(n) ) printf("%d\t",n); } /*判断一个数是否为绝对素数*/ int absoluteprime (int n) /*函数定义*/ { if(prime(n)==0) return 0; else if(prime(invert(n))==1) return 1; else return 0; }

C语言(函数)ppt课件

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语言函数章节》课件

《C语言函数章节》课件
学习如何在函数定义中设 置参数的默认值,方便函 数调用时的灵活性。
局部变量与全局变量
1
局部变量
了解索全局变量的定义和使用方式,以及注意事项。
3
变量的命名规范
学习良好的变量命名规范,提高代码的可读性和维护性。
函数递归
递归原理
数学递归
探索函数在自身内部调用的原理, 以及递归函数的特点。
展示一些数学问题的递归解法, 如阶乘、斐波那契数列等。
递归数据结构
介绍递归数据结构的概念和应用, 如二叉树和链表。
函数指针
指针基础
回顾指针的概念和用法,为后续学习函数指针做准 备。
函数指针的定义
学习如何定义和声明函数指针,以及对函数指针的 操作。
函数库与库函数
1 函数库
介绍函数库的概念和作用,如标准库和第三方库。
函数定义与调用
函数定义
学习如何在C语言中定义一个函数,包括函数名、 参数和返回值。
函数调用
了解如何在代码中调用函数,并传递参数和接收返 回值。
函数参数传递
1 值传递
了解值传递的概念和实现 方式,以及在函数调用时 传递参数的作用。
2 引用传递
探索引用传递的特性和用 法,包括指针和引用的概 念。
3 参数默认值
2 常用库函数
展示一些常用库函数的使用,如字符串操作、文件操作等。
3 自定义库函数
了解如何编写和使用自定义的库函数,提高代码的复用性。
内联函数和宏定义
1
内联函数
探索内联函数的特性和使用场景,以及与普通函数的区别。
2
宏定义
学习宏定义的概念和用法,如宏函数和宏常量。
3
内联函数和宏的对比
比较内联函数和宏定义在使用上的优势和劣势。

C语言( 函数) ppt课件

C语言( 函数)  ppt课件
思考:n=1234,如何逆置? 提示:考虑((4*10+3)*10+2)*10+1=4321。
11 ppt课件
#include<stdio.h> //构成逆序数的函数 int reverseNum(int x) // x 是正整数 {
int r=0; while(x>0) {
r = r*10 + x%10; x = x/10; } return r; }
#include<stdio.h>
#include<math.h>
void process(double array[ ], int n)//数组名作函数形参
{
int i;
for(i=0; i<n; i++) {
if(array[i]>=36) array[i]=sqrt( array[i] )*10;
printf("%d", a[i]);//数组元素作为函数实参
}
return 0;
p}pt课件
19
例5:有一个一维数组a,内放10个整数,分别输出这十 个数的平方。
#include<stdio.h> int square(int n) {
return n*n; } int main() {
int a[10], i, j; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%5d",square(a[i])); return 0; }
int isSymmetric(int n) //n为回文数返回1,否返回0 {

C语言程序设计基础 第7章

C语言程序设计基础 第7章

模块化程序设计的基本要点是贯彻“自顶向下,逐步细 化”的思想方法,即将一个复杂功能的编程问题,划分成若 干个功能相对简单的子问题。这种划分可以逐层进行,直到 便于编程为止。在C语言中,一个模块的功能由一个函数来 实现。顶层函数是主函数main( )。功能模块与C语言函数的 关系如图7.1所示。
图7.1 模块与函数
第7章 函数——模块化程序设计方法的实现
7.1 模块化程序设计方法与函数 7.2 函数的定义 7.3 函数的调用 7.4 函数调用的条件与函数声明 7.5 函数的嵌套调用和递归调用 7.6 变量的作用域与函数间的数据传递 7.7 用函数实现模块化程序设计 实训任务十三 熟悉函数的功能及其使用方法 实训任务十四 学习模块化程序设计的方法
② 函数功能实现部分,是一个程序段,要依据实现某 种功能的算法进行设计。
③ 函数体最后使用一个“return(返回值);”语句,括 号中的返回值是一个需传带给主调函数的数据对象。如果没 有返回值,可以不要这个语句。VC++ 6.0系统中提倡在 main( )函数体后使用一个“return 0;”语句,表示正常返 回系统,否则会出现警告。如果函数体仅是一对花括号,没 有任何语句,就是空函数。空函数一般是无参函数。
7.2 函 数 的 定 义
怎样定义函数?定义函数要考虑哪些问题?
定义函数要解决两个方面的问题:一是函数间的接口问 题,二是功能实现问题。接口问题包括如何被上层函数调用 ,调用时需传递什么数据,调用返回时需传带什么数据。功 能实现问题就是如何实现模块的过程算法。
函数定义的一般形式为
基类型符 函数名(类型符形式参数 1,类型符形式参数 2,…) {
函数体内数据对象定义或声明部分; 函数功能实现部分; return(返 回值); }

C语言程序设计知识点—第7章 函数

C语言程序设计知识点—第7章 函数
C 语言程序设计知识点
第 7 章:函数
主讲教师:杨剑
1. 本章目标
熟练掌握函数的定义与调用方法 理解函数的定义、声明和调用的区别 理解函数原型、实参、形参和函数的返回值 了解函数的嵌套调用和递归调用的方法 掌握数组做为函数参数的使用方法 理解变量的作用域和存储方法
2. 函数机制的优点
~6~
C 语言程序设计知识点
主讲教师:杨剑
[练习]若各选项中所用变量已正确定义,函数 fun 中通过 return 语句返回一个函数值,
以下选项中错误的程序是( )
A.main()
{……x=fun(2,10); ……}
float fun(int a,int b){……}
B.float fun(int a,int b){……}
int data; scanf(“%d”,&data); printf(“%d”,add(data)); return 0;
~5~
C 语言程序设计知识点
主讲教师:杨剑
} int add(____②_____) {
int i,sum=0; for(i=1;i<=n;i++)
sum=sum+i; _______③__________ } 答案: ①int add(int); ②int n ③retrun sum;
{
printf(“%d\n”,F(3+5));
}
[练习]程序运行后的输出结果是( )
A.192 B.29
C.25
D.编译出错
答案:D
在 C 语言中,函数返回值的类型最终取决于( )
A.函数定义时在函数首部所说明函数类型
B.return 语句中表达式值的类型 C.调用函数时主调函数所传递的实参类型

第七章(c语言谭版)函数

第七章(c语言谭版)函数

调用a

调用b

}
}
}
例: 用弦截法求方程的根。
x3–5x2+16x–80=0 方法如下: (1) 取两个不同点x1、x2,如果f(x1)和f(x2)符号相反, 则(x1,x2)区间内必有一个根。如果f (x1)与f (x2)同 符号,则应改变x1、x2,直到f (x1)、f (x2)异号为 止。注意x1、x2的值不应差太大,以保证(x1, x2) 区间只有一根。
float x1, x2; { int i; float x, y, y1; y1=f(x1); do { x=xpoint(x1, x2);
y=f(x);
if (y*y1>0) /*f(x)与f(x1)同符号。*/ {y1=y; x1=x;} else x2=x; } while (fabs(y)>=0.0001); return (x); }
个return.
返回值类型为函数类型。 一般return中的返
回值类型应与函数定义时的类型一致, 不一致时,
以函数定义类型为准。
5. 调用函数应对被调用函数的返回值类型作出说 明:(函数名相当于一变量,但应有所区别)
类型符 函数名( );
它不同于函数的定义(功能定义) 例: 求二实数之和 main ( ) { float add( ); float a, b, c;
hanoi(n, one, two, three)
表示n个盘子从one塔借助于two塔(空)移至three塔。 调用时塔用字符常量'A' ,' B ', ' C '表示。
§7.5 数组作为函数参数
分为两种情况: 1. 数组元素作为实参

C语言程序设计教程完整全套教学课件pptx

C语言程序设计教程完整全套教学课件pptx

C语言与高级语言的关系
探讨C语言与Java、Python等高级语 言之间的联系与区别,以及各自适用 的场景。
C语言的特点与优势
阐述C语言高效、灵活、可移植等特 点,以及在系统级编程、嵌入式开发 等领域的广泛应用。
计算机系统基本概念
1 2 3
计算机系统的组成
介绍计算机硬件系统的基本组成,包括中央处理 器、内存、输入/输出设备等。
强制类型转换
通过类型转换运算符来实现,其一般 形式为“(类型说明符)(表达式) ”,其功能是把表达式的运算结果强 制转换成类型说明符所表示的类型。
03
控制结构
顺序结构
顺序结构的概念
按照代码的先后顺序,逐行 执行程序。
顺序结构的流程图
用箭头表示程序执行的顺序 。
顺序结构的应用场景
适用于简单的计算和输出任 务。
局部变量和全局变量
局部变量
在函数内部定义的变量,只在该函数内有效,不同函数中的局部变量互不影响。
全局变量
在函数外部定义的变量,可以在整个程序范围内访问,但过度使用全局变量会降低程序的可维护性和可读性。
模块化设计思想
模块化设计概念
01
将程序划分为若干个独立的功能模块,每个模块完成
特定的功能,提高程序的可维护性和可重用性。
&&、||、!等
运算符和表达式
位运算符
&、|、^、~、<<、>>等
赋值运算符
=、+=、-=、*=、/=等
条件运算符
?
运算符和表达式
逗号运算符
,
表达式
由运算符和操作数组成的式子,用于计算一个值
数据类型转换
自动类型转换

计算机等级考试 C语言 第7章C语言 函数

计算机等级考试 C语言 第7章C语言 函数

/* 函数功能: 用迭代法计算n!
返回值函数类入型口参数:函整数型名变说量n明表示阶乘的形阶参数表,函
函数返回值: 函返数回的n!功的能值
数入口
*/
long Fact(int n) /* 函数定义 *函/ 数内部可以定义
{
只能自己使用的变
int i;
量,称内部变量
long result = 1;
for (i=2; i<=n; i++)
2/51
问题的提出
此前,我们所有的代码基本上都是放在main函 数中,这对于一个小的问题来说没问题,但如 果一个问题较大,里面涉及到成百上千个变量 ,将所有代码放在main函数里面显然是非常糟 糕的事情。
我们可以将一个大的问题分解成一个一个的小 问题,每个小问题放在一个函数里面,最后在 main函数里整合。这种思想实际上就是所谓的 “分而治之”。
printf("Input data error!\n"); } else {
for(i=2;i<=n;i++) {

result*=i;
2019/9/10
} return result; } }
25/51
防御性程序设计(Defensive Programming)
但是输入-1后,会输出 :
Input data error!
int i; long result=1; for(i=2;i<=n;i++) {
result*=i; } return result; }
int main() { int m; long ret;
printf("input m:"); scanf("%d",&m); ret=Fact(m); printf("%d!=%d\n",m,ret); return 0; }

中国矿业大学(北京)《C语言程序设计》课件第7章指针与数组

中国矿业大学(北京)《C语言程序设计》课件第7章指针与数组

a[1] a[2] a[3]
mmaainn(()) {{iinntt aa[[1100] ],,ii;;
ppuuttss((““pplleeaassee iinnppuutt %%dd ssccoorree::””,,N1)0;);
ffoorr ((ii==00;;i<i1<01;0i;++i+) +) ssccaannff(“(%"%d”d,"a?,+i&a[)i;]);
main()
{
int i = 0;
printf("%c%s\n",*a, b + 1);
while (putchar (*(a + i)))
{ i++;
Program
}
printf("i = %d\n",i);
PROGRAM
while ( -- i)
{ putchar (*(b + i));
i=7
} printf("\n%s\n", &b[3]);
1,2,3,3,2,3,4,4
20
读程序-3
#include <stdio.h>
char b[] = "program";
char *a = “PROGRAM”;
/*定义一个指针变量指向字符串,与上边定义的区别是:前者是先申请内存空间, 后存入字符串,而后者是先将字符串存入在内存的某个地方,然后再用a指向 该字符串所在内存的开始位置。另外。b是常量,a是变量*/
–指针变量指向哪儿?
–所指向的变量里存储的数据是多少?

C语言程序设计课件:函数

C语言程序设计课件:函数

函数
图5-2 例5-4程序运行结果
函数
5.2.2 函数的声明 在C语言中,除了main函数外,用户所定义的函数遵循
“先定义、后使用”的规则。当把函数的定义放在调用之后, 应该在调用之前对函数进行声明,即在所调用的函数之后定 义,则在调用函数之前需要对被调函数进行声明。
函数声明的一般形式如下: 类型名 函数名(参数类型1,参数类型2,…); 或者 类型名 函数名(参数类型1 参数名1,参数类型2 参数名 2,…); 这里的参数名可以是任意的标识符,即不必与函数首部 中的形参相同,甚至可以省略。 例如,在例5-4中,如果function函数在main函数之后定 义,则需在main函数之前加以说明,程序修改如下:
函数
2.函数定义的一些表现形式 (1) 无参函数的定义形式。 类型说明符 函数名() { 声明部分
语句 [return 语句] }
由于是无参函数,函数首部括号内是空的,说明没有 任何参数。
函数
(2) 有参函数的定义形式。
类型说明符 函数名(形参列表) { 声明部分
语句 [return 语句] }
实现判断素数功能,判断结果若是素数,m值为1; 判断结果若不是素数,m值为0
return (m); }
函数
5.2 函 数 的 调 用
5.2.1 函数调用的一般形式 定义函数的目的在于通过调用函数实现其功能。函数调
用的一般形式如下: 函数名(实际参数表)
或 函数名() 当实际参数(简称实参)多于一个时,各实参之间用逗号
函数
【例5-6】 10个人的成绩存放在数组中,定义函数对成 绩进行处理,将低于60分的成绩修改为60。
将10个人的成绩存放于数组score中,以score作为实参 调用函数pass。函数pass处理形参数组array,将其中小于60 的元素值修改为60。

零基础学C语言程序设计PPT课件(共15章)第7章 函数

零基础学C语言程序设计PPT课件(共15章)第7章  函数

7.8.1 使用库函数
不同的头文件中包含了不同类型的库函数。 如果想要使用库函数,需要将对应的头文件引入到代
码中。 引入头文件的语法如下所示。
#include<文件名>
尖括号可以使用一对英文的双引号代替,如下所示。
# include “文件名”
7.8.2 常见系统库
C语言中提供了很多系统库,不同的编译器支持的系 统库不同。常用的几个系统库进行展示,如表所示。
1.正余弦与反正余弦函数
C语言提供了正余弦与反正余弦函数,如表所示。
函数 sin(x) cos(x) asin(x) acos(x) sinh(x) cosh(x)
功能 求正弦值 求余弦值 求反正弦 求反余弦 求双曲正弦 求双曲余弦
2.正切与反正切函数
C语言提供了正切与反正切函数,如表所示。
…… 函数( ); …… } void 函数名( ) { …… }
函数声明
调用函数
7.3 使用参数
7.3.1 声明参数 7.3.2 传递参数
7.3.1 声明参数
声明参数是指在带参函数的首部对参数进行声明,语 法形式如下所示。
void 函数名(类型 形式参数)
多个形参
如果要声明多个形参,它们之间需要用逗号分割,其 语法形式如图所示。
log(x) log10(x) sqrt(x)
返回x的自然对数 返回x的常用对数(基数为10的对数) 返回x的平方根
exp(x) pow(x,y)
返回e的x次幂的值 返回x的y次方的值
7.10 小结
通过本章的学习,开发者需要知道以下的内容: 函数是结构形式。 函数组成。 调用函数。 声明参数。 返回值。 局部变量。 递归。 库函数。 math.h库函数。

C语言程序设计第11讲函数.ppt

C语言程序设计第11讲函数.ppt

main是主函数,首先执行main
2020/4/24
Page 5
7.1 函数概述
C语言语法规范:
Program Design in C Language
一个C程序由一个或多个函数组成,但至少 有一个主函数(main函数);main函数是程序执 行的入口,可置于程序的任何位置。
2020/4/24
Page 6
z=x+y; return z ; }
2020/4/24
Page 10
7.2 函数定义的一般形式
Program Design in C Language
函数定义的一般形式说明:
(1)
类型说明符:
float sum (float x , float y ) 指明函数的类型,函数的
{ float z ;
float sum (float x , float y ) 函数名:
{ float z ;
通常是一个标识符,
z=x+y; return z ;
在一个程序中除了主函 数外其余函数的名字可 以任意取,但应有意义。
}
"()" 函数标志。
2020/4/24
Page 12
7.2 函数定义的一般形式
Program Design in C Language
Page 3
7.1 函数概述
函数组成程序的例子
#include “stdio.h” void printstar( ) {
printf(“**********\n”); } void print_message( ) {
Program Design in C Language
} int main() { printstar( ); print_message( ); printstar( ); return 0; }

C语言程序课件ppt-第7章函数

C语言程序课件ppt-第7章函数

例7-7读程序,写出运行结果
# include <stdio.h> void swap(float x,float y){
float temp; temp=x;x=y;y=temp; } void main(){ float x=8.5,y=3.7; swap(x,y); printf("x=%.2f y=%.2f\n",x,y); }
哪个return都将结束函数的调用返回主调函数.
如: void swap(float x,float y) {float temp; temp=x;x=y;y=temp; return x; return y;}
(3)return语句中的括号可以省略;return后面的值可以是一 个表达式.
7.2.2函数的返回值
§7.1.1 函数概述
C程序的结构图如图所示:
main
a bc d e f g hh i
e
g
1、一个C程序可以分为若干个函数;
2、每个程序有且只能有一个主函数 (main),其他函数都是子函数;
3、子函数可以相互调用,但主函数 不能被调用;
4、一个源程序由一个或多个函数构 成,一个源程序文件是一个编译单 位;
例7-1函数调用示例
#include <stdio.h> void printstar(){
printf("***************\n"); } void print_message(){
printf (" How do you do?\n"); } void main(){
printstar(); print_message(); printstar(); }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8/78
7.2 函数(Function)的定义
若干相关的函数可以合并成一个“模块” 一个C程序由一个或多个源程序文件组成 一个源程序文件由一个或多个函数组成
2020/11/3
9/78
7.2.1函数的分类
函数生来都是平等的,互相独立的,没有 高低贵贱和从属之分 – main()稍微特殊一点点 – C程序的执行从main函数开始 – 调用其他函数后流程回到main函数 – 在main函数中结束整个程序运行
}
2020/11/3
函数出口
返回运算的结果
12/78
7.2.2函数的定义 (Function Definition)
参数表里的变量(叫形式参数, Formal Parameter)也是内部变量
类型 函数名(类型 参数1, 类型 参数2, ……)
{ 声明语句序列
函数体的定界符
可执行语句序列 return 表达式;
2020/11/3
4/78
问题的提出
《三国演义》中有这样一段描写:
–懿问曰:“孔明寝食及事之烦简若何?”使
者曰:“丞相夙兴夜寐,罚二十以上皆亲览焉 。所啖之食,日不过数升。”懿顾谓诸将曰: “孔明食少事烦,其能久乎?”
–此话音落不久,诸葛亮果然病故于五丈原。
“事无巨细”,“事必躬亲”
–管理学 (x)
因变量
函数名
自变量
程序设计中的函数
程序设计中的函数不局限于计算
–计算类,如打印阶乘表的程序……
–判断推理类,如排序、查找……
2020/11/3
3/78
问题的提出
读多少行的程序能让你不头疼? 假如系统提供的函数printf()由10行代码替 换,那么你编过的程序会成什么样子?
– 实际上一个printf()有上千行代码 main()中能放多少行代码? 如果所有代码都在main()中,怎么团队合作? 如果代码都在一个文件中,怎么团队合作?
–自己定义的函数
包装后,也可成为函数库,供别人使用
2020/11/3
11/78
7.2.2函数的定义 (Function Definition)
返回值 类型
函数名标识符, 说明运算规则
参数表相当于 运算的操作数
类型 函数名(类型 参数1, 类型 参数2, ……)
{ 声明语句序列
可执行语句序列 return 表达式;
14/78
【例7.1a】 计算整数n的阶乘n!
/* 函数功能: 用迭代法计算n!
返回值函数类入型口参数:函整数型名变量说n明表示阶乘的形阶参数表,函
函数返回值: 函返数回的n!功的能值
数入口
*/
long Fact(int n) /* 函数定义 *函/ 数内部可以定义
{
只能自己使用的变
int i;
量,称内部变量
有返回值时 –放到一个数值表达式中 返回值 = 函数名(实参表列);
c = max(a,b);
–作为另一个函数调用的参数
c = max(max(a,b),c);
printf("%d\n", max(a,b));
无返回值时 –函数调用表达式
函数名(实参表列);
2020/11/3
display(a,b);
第7
本章学习内容
函数定义、函数调用、函数原型、函数的参数 传递与返回值
递归函数和函数的递归调用
函数封装,函数复用,函数设计的基本原则, 程序的健壮性
变量的作用域与存储类型,全局变量、自动变 量、静态变量、寄存器变量
“自顶向下、逐步求精”的模块化程序设计方 法
2020/11/3
2/78
数学中的函数
}
函数体
2020/11/3
13/78
7.2.2函数的定义 (Function Definition)
函数无返回值,用 void定义返回值类型
用void定义参数 ,表示没有参数
void 函数名(void)
{ 声明语句序列
可执行语句序列
return; }
return语句后无
需任何表达式
2020/11/3
long result = 1;
for (i=2; i<=n; i++)
{ result *= i;
}
返回值作为函数 调用表达式的值
return result;
}
2020/11/3
15/78
7.3向函数传递值和从函数返回值
函数名(表达式1, 表达式2, ……);
实际参数(Actual Argument ) –函数调用(Founction Call)时提供的表达式
2020/11/3
10/78
7.2.1函数的分类
标准库函数
– ANSI/ISO C定义的标准库函数
符合标准的C语言编译器必须提供这些函数 函数的行为也要符合ANSI/ISO C的定义
– 第三方库函数
由其他厂商自行开发的C语言函数库 不在标准范围内,能扩充C语言的功能(图形、网络、数据 库等)
自定义函数
起来,从而使整个程序结构清楚
–使用函数时,不用知道函数内部是如何运作的
,只按照我们的需要和它的参数形式调用它即可
2020/11/3
6/78
程序设计的艺术
算法设计艺术
–程序的灵魂
–Donald E. Knuth,
“The Art of Computer Programming”, 清华大学出版社(英),国防工业出版社(中)
工作必须分工,各司其职
–其中的思想,在程序设计里也适用
2020/11/3
5/78
7.1分而治之与信息隐藏
分而治之( Divide and Conquer,Wirth, 1971 ) – 函数把较大的任务分解成若干个较小的任务,并
提炼出公用任务
信息隐藏(Information Hiding, Parnas, 1972) –设计得当的函数可把具体操作细节对外界隐藏
函数是C语言中模块化编程的最小单位
– 可以把每个函数看作一个模块( Module )
如把编程比做制造一台机器,函数就好比其
零部件
–可将这些“零部件”单独设计、调试、测试好
,用时拿出来装配,再总体调试。
–这些“零部件”可以是自己设计制造/别人设
计制造/现成的标准产品
Larry
Curly
Moe
2020/11/3
结构设计艺术
–程序的肉体 –模块化(Parnas, 1972)
结构化(Structural) 面向对象(Object-Oriented) 面向组件(Component-Oriented) 面向智能体(Agent-Oriented)
……
2020/11/3
7/78
7.2 函数(Function)的定义
相关文档
最新文档