c语言第5章函数

合集下载

数据结构函数.

数据结构函数.
举例
int max(int x, int y)/*函数定义*/ { return x>y?x:y; }
max(a, 3); /*函数调用*/
C语言程序设计 - 第5章 函数 7
参数传递
值传递
实参对形参的数据传递是“值传递”
单向传递
只能把实参的值传递给形参 不能把形参的值传递给实参 对形参的值所作的改变不能带回给实参
main函数结束 函数之间可以相互调用,或调用自身 不能调用main函数 函数之间相互独立,不存在从属关系
C语言程序设计 - 第5章 函数 2
函数定义的一般形式
函数定义形式
返回类型 函数名(参数声明) { 声明部分 语句 }
返回类型、参数、函数体内容都可没有
dummy(){}
/* does ing & returns nothing */
C语言程序设计 - 第5章 函数 16
函数声明举例 (2)
int max(int x, int y); /* 函数声明 */ void main() { /* 不需要再次声明int max(int, int) */
int a, b, c; c = max(a, b); } int max(int x, int y) { return x>y?x:y; }
函数定义举例
int max(int x, int y) {
int z; z = x>y?x:y; return z; } int min(int x, int y) { return x<y?x:y; }
C语言程序设计 - 第5章 函数 5
函数的调用、参数和返回值
函数的参数
形参和实参 参数传递
xy

C语言程序设计第五章

C语言程序设计第五章
通过编写程序,实现对数组的访问、修改 、排序等操作。例如,实现一个程序,将 一个数组中的所有元素进行排序,或者找 到数组中的最大值和最小值。
05 案例分析
案例一:条件语句在程序中的应用
总结词
条件语句是C语言中用于根据不同条件执行不同操作的语句,通过if、else if和else关键 字实现。
详细描述
编程练习二:循环语句应用
总结词
理解并掌握while和for循环的使用
详细描述
通过编写程序,实现重复执行某段代 码直到满足特定条件,或者根据需要 重复执行某段代码指定次数。例如, 计算1到100的累加和,或者打印出0 到99的所有偶数。
编程练习三:数组操作应用
总结词
理解并掌握数组的基本操作
VS
详细描述
详细描述
数组在程序中用于存储和处理同一种类型的 数据元素,例如存储一组学生的成绩、计算 一组数据的平均值等。数组操作包括数组的 声明、初始化、访问和修改等。通过循环语 句可以方便地遍历数组元素并进行处理。数 组操作在程序中具有广泛的应用,是C语言
中重要的数据结构和算法之一。
06 总结与展望
本章总结
详细描述
C语言中的数组是一种存储相同类型元素的线性数据结构。可以通过索引访问数 组元素,进行赋值、交换、排序等操作。同时,C语言还提供了字符串操作函数, 如strcpy、strcat、strlen等。
语法点三:数组操作
01
示例代码
02
```c
int array[10]; // 声明一个包含10个整数的数组
详细描述
循环语句在程序中用于重复执行一段代码, 例如打印1到10的数字、计算一定数量的累 加和等。循环语句可以嵌套使用,以实现更 复杂的循环结构和算法。循环语句通常与条 件语句结合使用,以控制循环的执行条件和 次数。

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

C语言程序设计 第05章 函数
❖ 函数体:一对花括号里面的内容(包括声明部分和语句 部分)又被称为函数体,当函数体为空的时候,该函数 也被叫做空函数,就是说它什么也不做。
8
计算机与信息工程学院
Page 8
C语言程序设计 第 5 章 函数
例1 计算两个整数的平均数的函数。 /* 函数功能:就算平均数 函数入口参数:整型x,存储第一个运算数
7
计算机与信息工程学院
Page 7
C语言程序设计 第 5 章 函数
❖参数:一般用于一个函数把数据传递给另一个函数(调用 者和被调用者之间),实现函数之间的通信。定义函数的 时候,函数的参数是形式参数,是对一件具体事件可能需 要数据的假设。
❖ 返回值: 即函数带回来的值。而返回值的类型是在定义函数 的时指定的,即用“返回值类型”指定函数的类型。 ❖ 1、如果类型标识符为void则表示不需要带回函数值; ❖ 2、如果没有类型标识,则为默认返回值类型,视编译 器的不同而不同。
单向传递,只由实参传给形参,而不能由形参传回 来给实参。 f) 在内存中,实参单元与形参单元是不同的单元。
13
计算机与信息工程学院
Page 13
C语言程序设计 第 5 章 函数
例2 调用函数时的数据(参数)传递。
#include <stdio.h> void main() {
int max(int x, int y); int a, b, c; scanf("%d, %d",&a, &b); c=max(a, b); printf("max is %d", c); }
计算机与信息工程学院
Page 4
C语言程序设计 第 5 章 函数
5.2.1 函数的分类

[工学]《C语言程序设计》第5章___数组、字符串、指针

[工学]《C语言程序设计》第5章___数组、字符串、指针

5.2.2 一维数组的初始化
1、数组声明时初始化 在编译阶段进行的。这样将减少运行时间, 提高效率。 数组初始化的一般形式为: 类型符 数组名[常量表达式]={值,值…值}; 例如: int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0; a[1]=1;... a[9]=9;

a[9]
#include <stdio.h> 声明有10个元素 void main() 的一维数组a {int n,i; float s=0, ave, a[10]; a[0] a[1] … a[9] for(i=0;i<10;i++) a[i] { scanf("%f",&a[i]); a[i] s=s+a[i]; } ave=s/10; for(i=0;i<10;i++) a[i] a[i] if (a[i]>ave) printf("%f ",a[i]); }
说明: ① int a[10]={0,1,2,3,4};
给前5个元素赋 值,其余赋0值 不能给数组整体 赋值,改成{1} 静态存储类型, 初值为0 可以省略数组元 素个数。 初值的个数不能 超过元素个数
② int a[10]=1;
③ static int a[3]; ④ int a[ ]={1,2,3,4,5}; ⑤ int a[5]={1,2,3,4,5,1 };
代码: for(i=0; i<N-1; i<5; i++) { p=i; for(j=i+1; i<N; j<6; j++) if(a[j]<a[p]) p=j; t=a[i]; a[i]=a[p]; a[p]=t; } 5-5.c

第5章 函数与带参数宏 《C语言程序设计及应用教程》课件-PPT课件

第5章 函数与带参数宏  《C语言程序设计及应用教程》课件-PPT课件

5.2 函数的嵌套与递归调用
函数的嵌套调用
不允许嵌套定义,函数间平行的、独立。 C中的函数:
允许嵌套调用。
main( ) 调用函数a 结束
a函数
调用函数b
b函数
【例5-7】 输入两个整数,求平方和
#include <stdio.h>
int fun1(int x,int y)
int fun1(int x,int y);
斐波那契数列");
for(i=0;i<N;i++)
{
printf("%d\t",iF[i]);
if((i+1)%10==0)
printf("\n");
}
printf("\n");
}
int Sum(int iF[],int n); void main() { int i,Fibonacci[N],m,n; //生成斐波那契数列 CreateFibonacci(Fibonacci); //输出斐波那契数列 PrintFibonacci(Fibonacci); //求数列前n项的和 printf(" 请输入要求和的项数 n(n<%d): ",N); scanf("%d",&n); m=Sum(Fibonacci,n); printf("\n 斐波那契数列前 %d项的和:%4d\n",n,m);}
第5章 函数与带参数宏 ?C语言 程序设计及应用教程?课件
5.1 函数的声明、定义与调用
5.1.1 函数的声明与定义 5.1.2 函数调用 5.1.3 函数参数传递 5.1.4 主函数中的参数

第5章 函数

第5章 函数

5.3函数的调用
在一个源程序中,如果调用的是标准函数, 则需在调用之前用#include命令将对应的头文 件包含进来;如果调用的是用户自定义函数, 则需将被调用的函数放在主调函数之前,否 则就需要在主调函数的声明部分加入被调用 函数的原型声明。
5.3.1 函数的声明
1. 函数声明的一般形式有两种: (1)函数类型 函数名(参数类型1, 参数类型 2, ……); (2) 函数类型 函数名(参数类型1 参数名1, 参 数类型2 参数名2, ……); 两种形式是的等价的。如: float add(float,float); 等效于: float add(float x,float y);
3. 从主调函数和被调函数之间数据传送的角度看,又 可分为: (1) 无参函数 函数定义、函数说明及函数调用中均不带参数。主 调函数和被调函数之间不进行参数传送。如上述程 序中的pline()函数、word()函数只是输出字符。 (2) 有参函数(带参函数) 在函数定义和函数说明时都带有的参数,称为形式 参数(简称为形参)。函数调用时所给出的参数, 称为实际参数(简称为实参)。进行函数调用时, 主调函数将把实参的值传送给形参,供被调函数使 用。
运行结果如图所示。
5.3.4 函数的嵌套调用

一个函数内不能定义另一个函数。但在函数调用时,可以嵌 套调用,即在调用一个函数的过程中,又调用另一个函数。
【例5.7】用调用函数求s=(12)!+(22)!+(32)!的 值,并在主函数中输出结果。 本题可编写两个函数,一个是用来计算平方 值的函数f1,另一个是用来计算阶乘值的函 数f2。主调函数先调f1计算出平方值,再在f1 中以平方值为实参调用 f2,计算其阶乘值, 然后返回f1,再返回主调函数,在循环过程 中计算累加和。

C语言程序设计-第5章全解

C语言程序设计-第5章全解
2018/10/21 华中科技大学计算机学院C语言课程组 22
函数返回的值,程序可以使用它, 也可以不使用它
while(…) { getchar(); c=getchar(); … } /* 返回值不被使用 */ /* 返回值被使用 */
2018/10/21 华中科技大学计算机学院C语言课程组 18
5.2.1
函数的定义
函数定义的一般形式为: 类型名 函数名(参数列表) { 声明部分 语句部分 }
2018/10/21 华中科技大学计算机学院C语言课程组 19


类型名说明函数返回值(即出口参数)的数据类型 (简称为函数的类型或函数值的类型),可以是除 数组以外的任何类型。当返回值类型为void,函数 将不返回任何值。 参数列表说明函数入口参数的名称、类型和个数, 它是一个用逗号分隔的变量名及其类型列表,它描 述了在调用函数时函数所接收的参数。一个函数可 能没有参数,在没有参数的情况下,参数列表说明 为void,否则必须明确地列出每一个参数的类型。
16

图5.1 C语言程序的基本结构
2018/10/21
华中科技大学计算机学院C语言课程组
17
5.2

函数的定义与函数的声明
程序中若要使用自定义函数实现所需的功能, 需要做三件事: ① 按语法规则编写完成指定任务的函数,即 定义函数; ② 有些情况下在调用函数之前要进行函数声 明; ③ 在需要使用函数时调用函数
2018/10/21
华中科技大学计算机学院C语言课程组
9



在函数的顶端用“/*……*/”格式包含的部分是函 数头部注释,包括函数名称、函数功能、函数参数、 函数返回值等内容,如有必要还可增加作者、创建 日期、修改记录(备注)等相关项目。虽然函数头 部注释在语法上不是必需的,但可以提高程序的质 量和可维护性,在程序设计时要遵从这一编程规范。 GetNum是函数名,其后的void说明函数调用时不 接收任何参数,即没有入口参数,函数执行完应该 返回所产生的随机数,即该随机数是函数的出口参 数,函数名前的int说明出口参数的类型为整型。 函数体内的rand是接口stdlib.h中的一个函数,它 返回一个非负并且不大于常量RAND_MAX的随机整 数,RAND_MAX的值取决于计算机系统。 MAX_NUMBER是用#define定义的符号常量,其 值为1000。当执行return语句时,其后表达式的值 被带回到调用函数中。

《C语言程序设计》教案 第五章 函数

《C语言程序设计》教案 第五章 函数
难点:指针、数组和函数的配合使用。
讲课进程和时间分配:
(1)指针、数组和函数的配合使用典型例题分析(40分钟);
(2)变量的作用域分析,变量的存储分类(15分钟);
(3)函数的嵌套调用(30分钟)
(4)习题布置和下一节内容提要(1分钟)
讨论、思考题、作业:
实验指导书习题
参考资(含参考书、文献等):
难点:函数的传址调用。
讲课进程和时间分配:
(1)数组名作为函数参数的典型例题分析(30分钟);
(2)指针作为函数参数时的典型例题分析(40分钟);
(3)学生练习(15分钟)
(4)总结、习题布置和下一节内容提要(5分钟)
讨论、思考题、作业:
实验指导书习题
参考资料(含参考书、文献等):
叶斌陈世强. C语言程序设计.北京:科学出版社
2
授课时间
教学目的和要求(分掌握、熟悉、了解三个层次):
3.熟练掌握变量的作用域和存储类别的知识;
4.掌握指针和数组与函数的配合使用;
5.掌握函数的嵌套调用。
教学内容(包括基本内容、重点、难点):
基本内容:指针和数组作为函数参数;变量作用域和存储类别;函数的嵌套调用;
重点:函数的使用方法、函数的嵌套调用;
重点:函数定义方法、函数调用方法、函数参数传递方法、返回值的使用和类型确定;
难点:函数调用方法、函数参数传递方法。
讲课进程和时间分配:
(1)模块化程序结构的概念、C语言程序结构回顾(5分钟);
(2)函数调用简单例子分析(10分钟);
(3)函数的定义方法(三种有参、无参、空函数)(10分钟)
(4)函数参数和函数值(参数传递方法、参数类型对应关系、函数返回值的含义、返回值的类型等)(20分钟)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【例5-3】定义判断奇偶数的函数 】定义判断奇偶数的函数even (n)
定义一个判断奇偶数的函数even (n),当n为偶数时返回 ,否 为偶数时返回1, 定义一个判断奇偶数的函数 , 为偶数时返回 则返回0 则返回 。
/* 判断奇偶数的函数 */ int even (int n) /* { if(n%2 == 0) /* return 1; /* else return 0; /* }
例5-4 源程序
#include <stdio.h> #include <math.h> int main (void) { double e, pi; double funpi (double e); printf ("Enter e:"); scanf ("%lf", &e); pi = funpi (e); printf ("pi = %f\n", pi); return 0; }
void 函数名(参数表) 函数名(参数表) { 函数实现过程 return; ; }
可以省略return 可以省略
/* 函数首部 */ /* 函数体 */
void函数通常用 函数通常用 于屏幕输出等
例5-2 输出5之内的数字金字塔 输出 之内的数字金字塔
#include <stdio.h> ︼︼︼︼ ︼1 int main (void) ︼︼︼︼ 2︼2 { void pyramid (int n); /* 函数声明 ︼︼︼3 ︼3︼3 */ ︼ pyramid(5); /* 调用函数,输出数字金字塔 */ 调用函数, 4︼ 4 ︼4︼4 ︼︼ return 0; ︼ 5 ︼5 ︼ 5︼5︼5 } void pyramid (int n) /* 函数定义 */ { int i, j; for (i = 1; i <= n; i++){ * 需要输出的行数 */ for (j = 1; j <= n-i; j++) /* 输出每行左边的空格 */ printf("︼"); for (j = 1; j <= i; j++) /* 输出每行的数字 */ /* 每个数字的前后各有一个空格 */ 每个数字的前后各有一个空格 printf("︼%d ", i); putchar ('\n'); } }
1.函数调用的形式和过程 . 函数名(实参表) 函数名(实参表)
◆使用返回值: 使用返回值:
返回结果
常量、变量、 常量、变量、表达式
volume = cylinder (radius, height ); printf(“%f \n” , cylinder (radius, height )); ◆完成操作(无返回值): 完成操作(无返回值) pyramid(5); 用于void类型函数的调用 用于 类型函数的调用
Enter e: 0.0001 pi = 3.1418
double funpi (double e) { int denominator, flag; Enter e: 0.0001 double item, sum; pi = 3.1418 flag = 1; denominator = 1; item = 1.0; sum = 0; while (fabs (item) >= e){ item = flag * 1.0 / denominator; sum = sum + item; flag = -flag; denominator = denominator + 2; } return sum * 4;
C程序构成 程序构成: 程序构成 一个main()函数 多个函数 函数+多个函数 一个 函数
调用函数: 调用函数 ◆完成一些特定的工作 完成一些特定的工作 ◆返回到调用它的地方 返回到调用它的地方 ◆回送该函数结果 当有结果时 回送该函数结果(当有结果时 回送该函数结果 当有结果时)
1.返回运算结果的函数定义 .
◆与函数类型一致 类型1 参数1 类型 参数 , 类型2 参数2 类型 参数 , ……, , 类型n 参数n 类型 参数
函数名(形参表) 函数类型 函数名(形参表)
{
函数实现过程 return 表达式; 表达式;
}
2.不返回运算结果的函数定义 .
◆表示不返回结果 不能省略void,否则默认 ◆不能省略 ,否则默认int
第5 章 函数
5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数
5.1 计算圆柱体积
5.1.1 程序解析 例5-1 输入圆柱体的高和半径,求圆柱体积 输入圆柱体的高和半径, volume=π*r2*h 要求: 要求: ◆定义 ◆调用函数
cylinder (r, h )计算圆柱 计算圆柱 体体积
例5-1源程序 源程序
#include <stdio.h> /* 计算圆柱体积 */ int main( void ) { double height, radius, volume; double cylinder (double r, double h); 函数声明 printf ("Enter radius and height: "); scanf ("%lf%lf", &radius, &height); volume = cylinder (radius, height ); 调用函数,返回值赋给 调用函数,返回值赋给volume printf ("Volume = %.3f\n", volume); return 0; }
函数返回值的类型 标识符 没有分号
函数名(形参表) 函数类型 函数名(形参表) { 函数实现过程 return 表达式; 表达式; }
把函数运算的结果回送给主函数
/* 函数首部 */ /* 函数体 */
只能返回一个值
形参与返回结果
不能写成 double r, h
double cylinder (double r, double h) double result; result =3.1415926 * r * r * h; return result; ◆返回运算的结果 }
/* 返回结果 */
Volume = 282.743
5.1.2 函数的定义
函数——完成一个特定工作的独立程序模块 完成一个特定工作的独立程序模块 函数 完成一个特定工作的独立程序 库函数: 提供定义 ◆库函数:C提供定义 如scanf()、printf()… 、 自定义函数: ◆自定义函数:如cylinder() (
例5-1源程序 源程序
/* 定义求圆柱体积的函数 */ double cylinder (double r, double h) { double result; result =3.1415926 * r * r * h; return result; }
Enter radius and height: 3.0 10 /* 计算体积 */
函数调用的过程
◆main开始执行 main开始执行 main 遇函数调用, ◆遇函数调用,主函数被暂停执行 ◆转向执行相应函数 函数执行完,返回主函数( return或最后的大 ◆ 函数执行完 , 返回主函数 ( 遇 return 或最后的大 括号) 括号) ◆从原先暂停的位置继续执行
分析函数调用的过程 #include <stdio.h> int main( void ) { double height, radius, volume; double cylinder (double r, double h); printf ("Enter radius and height: "); scanf ("%lf%lf", &radius, &height); 调用函数 调用函数 volume = cylinder (radius, height ); printf ("Volume = %.3f\n", volume); 实参值 形参变量 return 0; } double cylinder (double r, double h) { double result; 执行函数中的语句 result =3.1415926 * r * r * h; 返回调用它的地方 return result; }
2.参数传递 .
实际参数(简称实参) 函数调用 实际参数(简称实参)——函数调用时的参数 函数调用时的参数 volume = cylinder (radius, height);
单向传递 单向传递
常量、 常量、变量 或表达式
实参值 复制给 形参
实参值 复制给 形参
double cylinder (double r, double h);
5.3 变量与函数
5.3.1 局部变量和全局变量
作用范围: 作用范围:本函数内部
局部变量
◆函数内定义变量 包括形参) (包括形参) ◆复合语句内变量 作用范围: 作用范围:复合语句内部
形式参数(简称形参) 函数定义 形式参数(简称形参)——函数定义时的参数 函数定义时的参数
变量:用于接 变量: 受实参传递 过来的值
形参和实参一一对应: 形参和实参一一对应: 一一对应 个数,类型,顺序一致 个数,类型,
3.函数结果返回 .
两种情况 有一个运算结果返回给主调函数 函数结果返回的形式: 函数结果返回的形式: return 表达式; 表达式; return (表达式 ; 表达式); 表达式 完成指定工作, 完成指定工作,无确定的返回结果 函数类型void) (函数类型 ) return ;
相关文档
最新文档