C语言程序设计课件:第8章函数
C语言程序设计第8章 函数简明教程PPT课件
8.1 函数的概念与定义
程序运行情况如下: Enter a and b:10 20
The max is 20
计算机科学与技术学院—— C语言程序设计
8.1 函数的概念与定义
(2)函数名类似于其它的标识符,其命名规则也与其它 标识符相同。 (3)形式参数列表(formal parameter list)用来描述 函数所需要的参数个数及其类型,它的基本形式为: (类型名1 参数名1, 类型名2 参数名2, …, 类型名n 参 数名n) 如上例中的(int x, int y)。函数的参数是函数与它的主 调函数之间发生数据交换的一个通道,即被调函数通过参 数的方式建立起它与主调函数之间所需的信息交换的一种 途径。如果函数没有形式参数,则在定义时括号内可以为 空,但最好写上void。
计算机科学与技术学院—— C语言程序设计
8.1 函数的概念与定义
函数Max()的返回值由函数体中的return语句获得。 函数也可以没有返回值类型,此时,我们最好把没有返 回值类型的函数定义成void类型,这时,函数体中的 return语句可以不写,也可以只写上return语句: return; 。
C程序的这种组成结构,反映了一种结构化程序设计的思想。 一个程序可以分解为多个模块,每个模块可以实现一定的功能。 如果一个模块过于复杂,就可以进行再分解,直到分解出来的 模块足够简单,可以方便实现为止。这种结构化的程序设计思 想,体现出一种“分而治之”(devided and conquer)的哲 学理念,也是我们日常处理事情的一种典型方法。
程序设计者,只在库函数不能满足需要的时候,才需要自己 来创建所需要的函数(自定义函数)。读者学完本章之后, 就应该能自定义一些自己所需要的函数并能正确使用它们, 当然也要学会正确使用系统提供的大量的标准库函数。有 关库函数的详细情况和使用方法可以参考附录和其它相关 资料。
C语言程序设计教案---第八章-函数
第八章函数课题:第八章函数§1~§4教学目的:1、驾驭函数定义的一般形式2、驾驭函数调用的一般形式教学重点:教学难点:函数定义、调用的一般形式形式参数和实际参数步骤一复习引导一个C语言源程序可由一个主函数和假设干个协助函数组成。
由主函数调用其他函数,其他函数也可以相互调用。
步骤二讲授新课§8.1 概述例8.1main( ){ printstar( );print_message( );printstar( );}printstar( ){ printf( “ ********** \n”); }print_message( ){ printf(“How do you do ! \n”); }说明:1、一个源程序文件由一个或多个函数组成。
一个源程序文件是一个编译单位。
2、一个C程序由一个或多个源程序文件组成。
这样可以分别编写、分别编译,提高调度效率。
3、C程序的执行从main 函数起先,在main函数中完毕整个程序的运行。
4、全部函数都是平行的,即函数不能嵌套定义,函数可以相互调用,但不能调用main函数。
5、从用户运用的角度看,函数有两种:标准函数(库函数)和用户自己定义的函数6、从函数的形式看,函数分为两类:无参函数和有参函数§8.2 函数定义的一般形式〔一〕无参函数的定义形式类型标识符函数名( ){函数体(包括声明局部和执行局部)}例:printstar( ){ printf( “ ********** \n”); }〔二〕有参函数定义的一般形式类型标识符函数名(形式参数表){函数体(包括声明局部和执行局部)}例如:int max(int x, int y){ int z;z=x>y?x:y;return (z);}〔三〕一个函数可以是空函数如dummy( ) { }§8.3 函数参数和函数的值〔一〕形式参数和实际参数形式参数:定义函数时函数名后括号中的变量名,简称形参;实际参数:调用函数时函数名后括号中的表达式,简称实参。
C语言课件教学-第8章-函数
• main( )
• { int a=3, b=5;
• void swap( int , int );
• swap (a, b); • printf(“a=%d,
b=%d\n”, a, b);
调用 Main()函数:
•} • void swap (int x, int y)
像调用库函数 一样调用
函数定义
8.3 函数参数和函数的值
8.3.1 形式参数与实际参数
在调用函数时,大多情况下,主调与被调函 数间有数据传递关系,这就是有参函数。在定义 函数时,函数名后面括号中的变量名称为“形式 参数”,在主调函数中调用一个函数时,函数名 后面括号中的参数(可以是表达式)称为“实际 参数”。
}
max(x,y) int x, y; { int z;
z=x>y ? x : y; return(z); }
/ x, y为形式参数/
说明: 1)形参变量在被调用前不占用存储单元;在被调用结束 后,
形参所占存储单元亦被释放。因此,形参只有在该函数 内有效。调用结束,返回调用函数后,则不能再使用该 形参变量。
如:main( )
{
…
double new_style ( int, double ); /*函数声明*/
…
}
Double new_style (int a, double x) /*函数定义*/
{
…
}
说明:
1)类型标识符 被调函数名( );这种声明形 式也是合法的,但不提倡。
2)如果被调函数为自定义函数且其定义 在主调函数定义之前,则在主调函数中可 不必说明其类型。因为编译程序已知道其 类型。
《C语言函数》课件
函数的参数传递
函数可以接受参数,用于传递数据给函数内部使 用。
函数的调用
函数通过调用语句来执行,将会转到函数内部执 行相应的代码。
函数的分类
标准库
自定义函数
程序员可以根据需要自行定义函数,以完成特定的 任务。
函数的组成部分
1
函数头
函数头包含函数名和参数列表,用于声明函数的名称和接受的参数。
《C语言函数》PPT课件
C语言函数是学习C语言的基础,本课件将介绍函数的基本概念、分类、组成 部分,以及函数的递归调用、函数指针、库函数的使用等内容。
函数的基本概念
函数的定义
函数是一段完成特定任务的可重复使用的代码块, 通常接受参数并返回值。
函数的返回值
函数可以返回一个值,用于提供计算结果或执行 状态。
编写函数库
将函数编写为库
将一组相关函数封装成库,方便重用。
库的使用方法
使用库函数时,需要包含相关的头文件,并链接 库文件。
错误处理
1
错误处理的概念
程序中可能出现各种错误,需要进行处理,以确保程序正确运行。
2
错误处理的方法
常见的错误处理方法包括返回特定错误码、抛出异常等。
总结
函数的重要性
函数是程序的基本组成单元, 可以将复杂任务分解为更小 的可管理部分。
函数指针
1
函数指针的定义
函数指针是指向函数的指针变量,可以
函数指针的应用
2
用来存储函数的地址。
函数指针可以用来动态地调用不同的函 数,增加代码的灵活性。
库函数的使用
标准库函数的使用
标准库提供了许多常用的函数,可以直接调用来完 成任务。
自定义库函数的使用
《C语言函数》课件
文件操作函数用于创建、打开、读取、写入和关闭文件等 操作。
要点二
详细描述
C语言标准库提供了许多文件操作函数,如fopen()用于打 开文件,fclose()用于关闭文件,fread()用于读取文件内容 ,fwrite()用于写入文件内容等。这些函数通常需要包含 stdio.h头文件以正确使用。
详细描述
C语言提供了许多字符串函数,用于处理字符串数据。这些函数包括连接字符串、比较字符串、查找 子串等。它们通常在string.h头文件中定义,使用时需要包含该头文件。
字符串函数应用案例
• 示例:连接两个字符串
字符串函数应用案例
01
```c
02
int main() {
03
char str1[50] = "Hello, ";
• 示例:计算圆的面积和周长
数学函数应用案例
```c int main() { double radius, area, circumference;
数学函数应用案例
circumferencea = M_PI * pow(radius, 2);
radius = 5.0;
printf("无法打开文件n");
return 1; // 返回错误代码 1 表示打 开文件失败
文件操作函数应用案例
} else {
while ((ch = fgetc(file)) != EOF) { // 从文件中读取字符 并输出到控制台,直到到达
文件末尾(EOF)为止。
putchar(ch); // 使用 putchar() 函数将字符输出到 控制台。
01
03 02
数学函数应用案例
C语言完整 ppt课件
用一个标识符来表示一个字符串,称为“宏”,标识符称为“宏名”。在 程序中 用宏名替代字符串称为“宏调用”。在编译预处理时,将对程序中所有出现的 “宏 名”,都用宏定义中的字符串代换,这个过程称为“宏展开”。
1.4.1.1 不带参数的宏定义
格式为:#define 标识符 字符串
1.4.1.2 带参数的宏定义
1-4
1.3 C程序上机步骤
C源程序编好后,要经过编辑、编译、连接, 生成可执行文件后,才可运行。
运行集成开发软件
编辑源程序
编译
有 有错? 无 连接
不正确
运行
结果正确? 正确
结束
1-5
1.4 编译预处理
编译预处理是指,在C编译程序对C源程序进行编译之前,由编译预处理程 序对源程序中的预处理命令进行处理的过程。
1.2.1 C语言程序举例
1.2.2 C语言程序的结构
1.2.2.1 函数是C语言程序的基本单位。
1.2.2.2 函数的一般结构
任何函数(包括main()函数)都是由函数首部和函数体两部分组成。
1. 函数首部: 函数首部即函数第一行,由函数类型、函数名和函数参数表三部分组成。
2. 函数体: 函数体为函数首部下面的花括号{……}内的部分。 函数体一般由声明部分和执行部分构成:声明部分定义所用到的变量,声明所调用的函数等; 执行部分有若干语句组成。
2.6.1 运算符及表达式简介 2.6.1.1 运算符
C语言中的运算符具有2个特点: ⑴ 运算符的优先级 C语言中,运算符的优先级共分为15级,1级最高,15级最低。 ⑵ 运算符的结合性 C语言中各运算符的结合性分为左结合性(从左到右)和右结合性(从右到左)。 2.6.1.2 表达式 表达式是由常量、变量、函数和运算符组成的式子。 表达式求值是按运算符的优先级和结合性规定的顺序进行的。
C语言程序设计第八章 优化学生成绩分析系统指针.ppt
C语言程序设计
1 指针与字符串(5)
1.2 使用字符串指针变量与字符数组的区别(续) 例2 分析下面程序的运行结果
main() { char *a="I Love China!";
a=a+7; printf(“%s\n",a); }
运行结果: China!
9
项目八 优化学生成绩分析系统-指针
C语言程序设计
int a,b,c;
例sc6an将f(给"%出d的,%程d"序,&修a,改&b为);使用函数指针变量定义
的c=方m式ax(a,b);
c=(*p)(a,b);
printf("a=%d,b=%d,max=%d",a,b,c);
}
max(int x,int y)
{
int z;
if(x>y) z=x;
else z=y;
指针数组,有4个元素,每个元素 都是指向整型变量指针变量
Int (*p)[4];
由4个整型变量组成的数组的指针
21
项目八 优化学生成绩分析系统-指针
#include <stdio.h> ma3in指()针数组 (2)
C语言程序设计
p[0]
11
{ 3.1 指针数组(续)
22
static int
33
a[3][4]={{11,22,33,44},{55,66,77,88},{99,110,1224,4133}};
【项目分析】
为了保存一个班的C语言成绩需要借助于一维数组,通过指针对其数 据进行操作。将本项目分成两部分,首先借助于指针对一维数组进 行访问,然后介绍一种新的排序算法—选择排序。
C语言课件(函数)
2
P OSIX库函数的使用
介绍POSIX库函数,以及在UNIX和UNIX-like系统中使用它们的方法。
3
系统函数的使用
学习如何使用操作系统提供的函数来完成特定的任务,如文件操作和网络编程。
Part 9:常见问题和技巧
1 函数调试的技巧
分享一些用于调试函数的技巧和工具,帮助您更好地查找和修复错误。
递归函数的应用场景
探索递归函数的实际应用场景, 如数学计算和数据结构。
Part 6:函数指针
1
函数指针的定义和使用
学习如何定义和使用函数指针,以便在程序中灵活地调用函数。
2
函数指针的作用
讨论函数指针的作用,包括回调函数和动态函数调用。
3
回调函数的实现
了解回调函数的原理及其在实际编程中的应用。
Part 7:高级函数
可变参数的函数
学习如何编写可接受可变数量参数的函数,以提高代码的灵活性。
内联函数
介绍内联函数的概念以及如何使用内联函数来提高程序的执行效率。
匿名函数的实现
探索匿名函数的实现方式以及它们在函数编程中的应用。
Part 8:库函数和系统函数
1
标准库函数的使用
了解常用的C标准库函数,并学习如何正确地使用它们。
C语言课件(函数)
C语言课件(函数)
Part 1:函数概述
函数的定义形式
了解函数的定义方式,例如函数名、参数列表和返回类型。
函数参数的传递方式
探索函数参数传递的不同方式,如按值传递、按引用传递和按指针传递。
函数返回值的类型
了解函数返回值的类型,并了解如何处理不同类型的返回值。
Part 2:函数的调用和传参
2 头文件的作用
C语言程序设计 第3版 第8章 函数
s=a+b;
return s;
}
main()
//主函数
{
int s;
s=sum();
printf("s=%d\n",s);
}
运行结果
2 3↙ s=5
C语言程序设计
2.函数的定义
无返回值无参数 无返回值有参数
有返回值无参数 有返回值有参数
一般形式:
类型标识符 函数名(形式参数表列) {
函数体; return 表达式; }
调用方式
函数调用的一般形式:
函数名(实际参数表) 实际参数表中的参数可以是常数、变量或表达式,各实参之间用逗号分隔。
调用方式:
(1)函数表达式:函数作为表达式中的一项出现在表达式中,这种方式要求函数有返回值。 例如:s=sum(x,y);把sum的返回值赋予变量s。
(2)函数语句:函数调用的一般形式加上分号即构成函数语句,这种方式不要求函数有返回值。 例如:sum(x,y);以函数语句的方式调用函数。
void sum(int a,int b) //自定义函数
{
int s;
s=a+b;
ห้องสมุดไป่ตู้
printf("s=%d\n",s);
} main()
//主函数
{
int x=2,y=3;
sum(x,y);
}
运行结果
s=5
C语言程序设计
2.函数的定义
无返回值无参数 无返回值有参数
有返回值无参数 有返回值有参数
一般形式:
类型标识符 函数名( ) {
函数体; return 表达式; }
注意说明:
(1)函数的类型实际上是函数返回值的类型。
c程序设计 第8章 函数
说明: (1)main 函数中定义的变量只在主函数中有 效,主函数不能使用其他函数中定义变量。 (2)不同函数中可以使用相同名字的变量 (3) 形式参数也是局部变量。 (4) 在一个函数内部,可以在复合语句中定义 变量,这些变量只在本复合语句中有效,这 种复合语句也可称为“分程序”或“程 序块”。
}
例8.13 用选择法对数组中10个整数 按由小到大排序。所谓选择法就 是先将10个数中最小的数与a[0]对 换;再将a[1]到a[9]中最小的数与 a[1]对换……每比较一轮,找出一个 未经排序的数中最小的一个。 共比较9轮。
下面以5个数为例说明选择法的步骤。 a[0] a[1] a[2] a[3] a[4] 3 6 1 9 4 1 6 3 9 4 最小数1与a[0]对换 1 3 6 9 4 最小数3与a[1]对换 1 3 4 9 6 最小数4与a[2]对换 1 3 4 6 9 最小数6与a[3]对换
#include “math.h” float area(float a, float b, float c)
{float p, s;
p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); return(s); }
main( ) {float a[10], b[10], c[10], s[10] ;
全局变量可以为本文件中其他函数所共用。 它的有效范围为从定义变量的位置开始到 本源文件结束。
int p=1,q=5; /*外部变量*/ float f1(a) /*定义函数f1*/ int a; {int b,c; … … } char c1,c2;/*外部变量*/ char f2 (int x, int y)/*函数f2*/ { int i,j; … … } main ( )/* */ {int m,n; … }
C语言程序设计(第八章)
的读写函数。 每次可从文件读出或向文件写入一个字符。
第八章
1.读字符函数fgetc()
fgetc() 函数的功能是从指定的文件中读一个字符,函
数调用的形式为:
字符变量 = fgetc(文件指针);
例如:
ch = fgetc(fp);
的意义是从打开的文件fp中读取一个字符并送入ch中 。
(1)字符读/写函数 :fgetc()/fputc()
(2)字符串读/写函数:fgets()/fputs()
(3)数据块读/写函数:freed/()fwrite()
(4)格式化读/写函数:fscanf()/fprinf()
以上函数原型都在头文件stdio.h中加以声明。
第八章
8.5.1字符读/写函数 :fgetc()/fputc()
关闭文件则断开指针与文件之间的联系,禁止再对该文
件进行操作。
第八章
8.3.1 文件打开的函数fopen()
open函数用于打开一个文件,其调用的一般形式为: 文件指针名 = fopen(文件名, 使用文件方式);
“文件指针名”:必须是被说明为FILE 类型的指针变量。
“文件名”:被打开文件的文件名,“文件名”是字符串常 量、字符数组或字符指针。 “使用文件方式”:指文件的类型和操作要求。
/* 输出系统提示信息 */
上面程序段的意义是,如果返回的指针为空,表示不能 打开test.dat文件,则给出提示信息“打开文件test.dat出 错!”,然后输出系统提示信息,当用户从键盘敲任一键后 执行exit(1)退出程序 。
第八章
8.3.2 文件关闭的函数fclose()
C语言课件第08章函数
例 8.3 返回值类型与函数运类行型情不况同如下:
# include <stdio.h>
1.5, 2.5↙
void {
main() int max(float
x,floaMtayx )i;s
2
float a,b;
int c;
scanf("%f,%f,",&a,&b);
c=max(a,b);
printf("Max is %d\n",c); }
m = max (a , max ( b , c ) ) ;
其中max ( b , c )是一次函数调用,它的值作为max另 一次调用的实参。m的值是a、b、c三者中的最大者。
又如: printf ("%d", max (a,b));也是把max ( a , b )
作为printf函数的一个参数。 函数调用作为函数的参数,实质上也是函数表达
int max(float x,float y)
{ float z;
/* z为实型变量 */
z=x>y?x∶y;
return(z); }
§8.4 函数的调用 §8.4.1 函数调用的一般形式
函数调用的一般形式为: 函数名(实参表列)
如果是调用无参函数,则“实参表列” 可以没有,但括弧不能省略。
如果实参表列包含多个实参,则各参数 间用逗号隔开。实参与形参的个数应相 等,类型应匹配。实参与形参按顺序对 应,一一传递数据。
§8.3函数参数和函数的值 §8.3.1形式参数和实际参数
大多数情况下,主调函数和被调用函数之间有 数据传递的关系。
在不同的函数之间传递数据,可以使用的方 法: ◆ 参数:通过形式参数和实际参数 ◆ 返回值:用return语句返回计算结果 ◆ 全局变量:外部变量
c语言第八章 函数
教学进程
8.2
函数的调用
【练习题 】
用函数实现求两个实数的和。
#include <stdio.h> void main() /*主调函数*/ { float add(float x, float y); /*函数声明*/ float a,b,c; printf("Please enter a and b:"); scanf("%f,%f",&a,&b); c=add(a,b); 因函数声明与函数首 printf("sum is %f\n",c); 部一致,故把函数声 } 明称为函数原型。 float add(float x,float y) /*被调函数首部*/ { float z; z=x+y; 用函数原型来声明函数,能减少 return(z); 编写程序时可能出现的错误。 }
教学进程
8.2.3 函数的调用
定义函数时,函数名后括号中的变量称为形式参数,即形参。 定义函数时,函数名后括号中的变量称为形式参数,即形参。 在主函数中调用函数时,函数名后括号中的表达式称为实际 参数,简称实参。
【例 】 输入两个整数,要求用一个函数求出其中的大者,并 在主函数中输出此数。
教学进程
a
b
c
d
e
f
教学进程
运行结果: 【例】 函数调用的简单例子。
**************** How do you do! ****************
/*主调函数*/ /*主调函数* #include <stdio.h> void main() { void printstar(); printstar(); void print_message(); print_message(); printstar(); print_message(); printstar(); }
C语言程序设计实例教程课件:函数
4.2.1 函数的定义
从函数是否带参数的角度来看,函数可分为无参函数和有参函数 两种。如果函数不带参数,则函数名后的圆括号中为空,但圆括号不 可省略。如果带多个参数,则参数间用逗号间隔。
4.2.1 函数的定义
4.3 函数调用
3. 函数调用过程 一个C程序可以包含多个函数,但必须包含且只能包含
一 个 main() 函 数 。 程 序 的 执 行 从 main() 函 数 开 始 , 到 main()函数结束。程序中的其它函数必须通过main()函数 直接或者间接地调用才能执行。
【例4.3】比较两个数的大小,输出较大值。
分析:定义一个求n!的函数fac,主函数中三次调用fac 函数实现求组合数。 当输入6,2,运行结果如图所示:
4.6 递归调用
如果一个函数在调用的过程中出现直接或者间接地调用 该函数本身,称为函数的递归调用。C语言的特点之一就是 允许使用函数的递归调用。
int fn(int a) { int x,y;
4.2.1 函数的定义
在函数定义中还应注意以下几个问题: ▪ 不论函数的形式参数类型是否相同,必须分别说明参数类型。 如: (float a, float b)不能写成(float a, b) ▪ 函数的定义不允许嵌套。也就是说不允许在一个函数体内再 定义一个函数。下列写法是错误的:
int f1(int x, int y) { int a, b; … int f2(int m) { … } … }
出2!,就必须先求出1!,而根据递归公式可知,1!=1,从而,再反过来 就可以依次求出2!,3!,4!,5!。
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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数调用
❖ 函数被定义后,只有在调用函数里安排函数调用, 才能将控制从调用者转移到被调函数,也才能进 行数据的传递
❖ 调用者在函数调用时,可向被调用者传递一个或 多个参数。由调用者传递给被调函数的参数,称 为实际参数,简称实参。被调函数接收传递过来 的实参后,依据这些数据执行函数体里的语句。 执行结束后,就把控制返回到调用者发出函数调 用的地方,继续其执行
吉林大学珠海学院计算机系
函数调用 #include <stdio.h>
#include <math.h> int prime (int n) {
吉林大学珠海学院计算机系
函数调用
❖例5.1:调用cube( int x )函数
#include <stdio.h> long cube ( int x ) {
long a; a = x*x*x; return (a); } void main() { int a; long m; scanf ("%d", &a); m = cube(a); printf (“The cude of %d is %ld \n", a, m); printf (“The cude of %d is %ld \n", a, cube(a)); } 吉林大学珠海学院计算机系
吉林大学珠海学院计算机系
函数定义
❖函数名称:cube 执行后返回值类型是long型 ❖ 形式参数:int型,名称为x ❖ 变量声明:在函数体里,说明一个long型变量a, ❖执行语句:a = x*x*x; ❖ 返回语句:return(a);将a的值返回调用者 ❖ 函数类型long与return语句的返回值应一致 ❖ 该函数不能独立运行,必须由调用者通过调用语
int a; scanf ("%d", &a); odd_even(a); } 吉林大学珠海学院计算机系
函数调用
❖ 例5.3:定义名为power的函数,计算x的n次方
#include <stdio.h> double power (double x, int n) {
double s; for (s=1.0; n > 0; n--) { s = s*x; } return (s); } main() { double a, pow; int i; scanf ("%lf%d", &a, &i); pow = power(a, i); printf ("value = %lf\n", pow); } 吉林大学珠海学院计算机系
吉林大学珠海学院计算机系
函数调用
❖ 有返回值的函数,是以函数表达式的方式调用 函数名 (实际参数表)
❖ 无返回值的函数,是以函数调用语句得方式调用 函数名 (实际参数表);
❖ 无论是有返回值还是没有返回值,函数调用时在 实际参数表中列出的实参,必须与被调函数在定 义时在形式参数表中所列形参的个数相等、类型 相符、次序相同,各实参之间仍以逗号为分隔符
吉林大学珠海学院计算机系
函数调用
❖ 函数返回值是通过return语句带回到主调函数 return (表达式); 或 return 表达式; 函数返回值类型由函数类型决定 被调函数无return语句,返回值不确定 函数定义为void类型,不带回返回值 函数可有多条return语句,但是一次运行,只 能执行其中一条return语句。 通过return语句只能返回一个值;如要返回多 个值,只有借助于指针或数组
吉林大学珠海学院计算机系
函数定义
❖ 函数定义的一般格式 函数类型 函数名( 形式参数 形式参数列表 ) { 函数体 } 函数类型:函数执行后返回结果的数据类型。 若函数不返回任何结果值,那么函数类型指定 为void。若函数类型省略,将默认是int
吉林大学的函数 long cube (int x) { long a; a = x*x*x; return (a); }
吉林大学珠海学院计算机系
函数的基本概念
❖ 从用户的角度看,函数有两种: 1.标准库函数,由系统提供的。 2.用户自定义函数,由程序设计者根据专门需 要自己定义的
❖ 从函数的定义形式看,函数分两类: 1.无参函数,在调用函数时,主调函数不向被 调用函数传递参数。 2.有参函数,在调用函数时,主调函数和被调 用函数之间有参数
函数调用
❖ 例5.4:编写判断素数的函数,求出100以内素数 ❖ 所谓素数是指只能被1和自己整除的自然数 ❖ 除2以外,素数都是奇数 ❖定义函数prime( int n ),接收调用者传递的参数 ❖ 剔除n=1的情况,单独处理n=2的情况 ❖ 其余用循环来判断:剔除偶数,寻找从3到sqrt(n)
之间的奇数是否存在能整除n的数。若有,则表明 n不是素数,返回值0;否则n为素数,返回值1
句,把要计算的对象传递给它
吉林大学珠海学院计算机系
函数定义
❖ 定义函数功能:若接收整型参数是偶数,则打印 It is even!,否则打印 It is odd! void odd_even (int x) { if (x %2 == 0) printf ("It is even! \n"); else printf ("It is odd! \n"); }
函数调用
❖例5.2:调用odd_even (int x)函数
#include <stdio.h> void odd_even (int x) {
if (x%2 == 0) printf ("It is even! \n");
else printf ("It is odd! \n"); } void main() {
C语言程序设计
吉林大学珠海学院计算机系
第5章 函数
本章内容
1 函数的基本结构 2 函数的调用 3 函数的参数传递 4 变量的作用域及存储类型
吉林大学珠海学院计算机系
函数的基本概念
❖ 所谓函数,是可以反复使用的一个程序段,其他 函数可通过调用语句来执行这段程序,完成所需 要的工作
❖ 程序由基本语句和函数组成,每个函数完成相对 独立的功能,按一定规则调用这些函数,就组成 了解决某个特定问题的程序