1库函数的正确调用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件
三、系统函数 (一)、数学函数 数学函数均包括在头文件“math.h”中 1. 求整型绝对值函数 2. 求实型绝对值函数 int abs(int x) double fabs(double x)
调用函数的过程: ① 为函数的所有形参分配内存单元。 ②计算各个实参表达式的值,一一对应的赋值给相 应形参(若是无参函数,上述过程不执行)。 ③ 进入函数体,执行函数中的语句,实现函数的 功能。 ④执行到return语句时,计算return语句中表达式 的值(若是无返回值函数,本项不做),返回到主 调函数。 ⑤ 释放形参及本函数内的局部变量所占内存, 继续 执行主调函数中的后继语句。
七、函数
1.库函数的正确调用。
2.函数的定义方法。
3.函数的类型和返回值。 4.形式参数与实在参数,参数值的传递。 5.函数的正确调用,嵌套调用,递归调用。 6.局部变量和全局变量。
7.变量的存储类别(自动,静态,寄存器,外 部),变量的作用域和生存期。
8.内部函数与外部函数。
分析:这部分主要讨论函数的相关知识,一般会 出4~5个选择题和3~4个填空题,同时也是编程的 重点。 注:1) 区分 函数之间参数传递的两种方式:传值 和值地址方式。2) 局部变量和全局变量的区别。 3)变量的生存期与作用域。
3、返回语句 形式: return(表达式); 或 return 表达式; 或 return; 功能:使程序控制从被调用函数返回到调用函数中, 同时把返值带给调用函数 说明: 1)函数中可有多个return语句,但只执行一个 2)若无return语句,遇到函数结束的“}”时, 自动返回主调函数 3)若函数类型与return语句中表达式值的类型不 一致,按前者为准,自动转换------函数调用转换
7. 求指数函数(ex)
double exp(double x)
8. 求x的y次方函数(xy)
double pow (double x, double y)
9. 求正弦函数(sin x)
double sin(double x)
10. 求余弦函数(cos x)
double cos(double x)
#include “stdio.h“ int max(int x,int y); void main() { int a,b,c; scanf(“%d%d”,&a,&b); c=max(a,b); printf(“%d”,c); } int max(int x,int y) { return x>y?x:y ; }
非void型函数
函数体中必须有return语句,
void型函数
函数体中return语句可以不出现。若出现, 则不能带表达式。 例 void型函数 void swap(int x,int y ) { int temp; temp=x; x=y; y=temp; }
例 函数返回值类型转换 max(float x, float y) { float z; z=x>y?x:y; return(z); } main() { float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); }
概述
模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块 特点: 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高元件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法: 自上向下,逐步分解,分而治之
C语言是模块化程序设计语言
3. 求小于或等于x的最大整数函数 double floor(double x) 4. 求正平方根函数 double sqrt(double x)
5. 求常用对数函数(lg(x))
double log10(double x)
6. 求自然对数函数(ln(x))
double log (double x)
三、函数调用
形式: 函数名 ( 实际参数表 )
(1) 没有返回值的函数调用格式: 函数名(实际参数表);
(2) 有返回值的函数调用格式:
函数名(实际参数表)
调用方式
函数语句:函数调用可单独成为一个语句 例 output(); printf(“Hello,World!\n”); 函数表达式: 调用函数后的返回值可参加表达式的 计算,这时要求被调函数带返回值。 例 sum=add(a,b); c=fac(n)/(fac(k)*fac(n-k)) ; 函数参数:带返回值的函数调用亦可作为其它函数 的参数(实际参数) 例 printf(“%d”,max(a,b)); m=max(a,max(b,c));
注:
函数调用在前,定义在后,则必须对函数进
行说明,Βιβλιοθήκη Baidu数说明可以放在函数调用之前所在的
函数内,也可以放在源文件开头、函数的外部。
函数说明和函数定义在返回类型、函数名和参
数表上必须要完全一致。
函数说明以分号结束。
【例】函数说明示例
#include “stdio.h" void main() { 省略参数名 int a,b,c; int max(int x,int y); //函数说明,也可int max(int,int); scanf(“%d%d”,&a,&b); c=max(a,b); printf(“%d”,c); } int max(int x,int y) { return x>y?x:y ; }
以是同类型的常量、变量或表达式。
函数定义中的形参只有当发生函数调用时,才被
分配内存单元。
四、函数说明
对被调用函数要求:
必须是已存在的函数
库函数: #include <*.h> 用户自定义函数: 函数类型说明 函数说明 一般形式:
函数类型
函数名(形参类型 [形参名],….. );
作用:告诉编译系统函数类型、参数个数及类型, 以便检验;
#include <stdio.h> 文件包含编译预处理命令 long sum(int a, int b); 函数类型说明 long factorial(int n); main() { int n1,n2; long a; long factorial(int n) long sum(int a, int b); { long rtn=1; scanf("%d,%d",&n1,&n2); int i; a=sum(n1,n2); 函数调用 实参 for(i=1;i<=n;i++) printf("a=%1d",a); rtn*=i; } 函数定义 return(rtn); long sum(int a,int b) } 形参 { long factorial(int n); long c1,c2; c1=factorial(a); 函数调用 c2=factorial(b); return(c1+c2); 函数返回值 }
#include “stdio.h" void main() { pic(4); //以语句形式调用 pic(6); }
函数调用说明:
调用系统函数时,要求在程序的开始用包含命令
# include <头文件名.h>
函数调用时,实参列表中的实参不能带数据类型。 实参与形参的个数、位置与类型必须一致。它可
(三)类型转换函数
类型转换函数包括在不同的头文件中。 1. 将大写字母转换成小写字母函数 int tolower(int x) 2.将小写字母转换成大写字母函数 int toupper(int x) 以上二个函数均包括在头文件“ctype.h”文件中,因 为它们的x可以是“字符型”。
3. 将字符串转换成浮点数函数 double atof(char *x) 4. 将字符串转换成整数函数 double atoi(char *x) 以上二个函数均包括在头文件“math.h”文 件中。
float add(float x, float y) { float z; z=x+y; return(z); } main() { float a,b,c; scanf("%f,%f",&a,&b); c=add(a,b); printf("sum is %f",c); }
被调函数出现在 主调函数之前, 不必函数说明
例例有参函数 有参函数 int max(int x, x,int y) y) int max(int 例 空函数 例 { {无参函数 int z; z; ) int dummy( printstar( ) z=x>y?x:y; { z=x>y?x:y; } 函数体为空 { printf(“********** \n”); } return(z); return(z); } }
二、函数的定义 1. 定义格式 合法标识符
函数类型 函数名(形参类型说明表) { 说明部分 函数体 语句部分 } 函数返回值类型 缺省int型 无返回值void
2. 说明
(1) 函数有“函数头”和“函数体”两部分组成;函数体 由语句和其它分程序组成。 (2)函数类型规定了函数返回值的数据类型,若无返回值 则数据类型为void;如果函数有返回值,则在函数体中 应有一条返回语句“return (表达式);”,无返回值, 则返回语句应为“return;”,也可以省略。 (3)形式参数表是用逗号分隔的若干个形式参数,每个形 参可以是一个变量名、数组名、指针变量名和指针数组名; 形参列表中每个参数的数据类型必须给出。 (4)形式参数可以为空,但圆括号不能省略。 (5)形参若是数组,只需给出数组名,[]中数组长度不需 给出; (6)函数体中不允许再嵌套定义函数
C程序
源程序文件1
源程序文件i
源程序文件n
预编译命令
函数1
函数n
说明部分
执行部分
C是函数式语言 必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main中结束 函数不能嵌套定义,可以嵌套调用
C程序结构
函数分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函数 有参函数
11. 求正切函数(tg x)
double tan(double x) 注:以上三个函数的x都必须是弧度,如果是角 度,可以用“x*3.14159/180”转换成弧度
(二)字符处理函数 字符处理函数均包括在头文件“ctype.h”中
1. 判断是否是英文字母函数 int isalpha(int x) 2. 判断是否是英文小写字母函数 int islower(int x) 3.判断是否是英文大写字母函数 int isupper(int x) 4. 判断是否是数字字符函数 int isdigit(int x)
(四)内存管理函数 内存管理函数包括在头文件“alloc.h”中。
1. 内存分配函数
void *malloc(int size)
2. 内存释放函数
void free(void *clock)
一、函数的概念
函数是一个可以反复使用的程序段,从其它的程序 段中均可以通过调用语句来执行这段程序,完成既定 的工作。 说明: (1) 建立函数称为“函数定义”,使用函数称为“函 数调用” 。 (2) 调用其它函数的函数称为“主调函数”,而被调 用的函数称为“被调函数”。
【例】编写函数,求三个整型参数的最大值。
int max(int x1,int x2,int x3) /*定义函数的返回值类型,函数名,形参*/ { int max; if (x1>x2) max=x1; else max=x2; if (max<x3) max=x3; /*通过比较得到三个数的最大值放到max中*/ return(max); /*返回运算结果*/ }
【例5.2】编一程序,输出如右图形。
将n行构成的三角形独立出来编一函数:
void pic(int n){ int k,j; for(int i=0;i<n;i++) { for( k=0;k<10-i;k++)printf(" ") ; //控制每行输出的起始位 for(j=0;j<2*i+1;j++)printf("*"); printf("\n"); }} void main() { pic(4); pic(6); }
函数调用和返回的过程:
主函数 自定义函数 保存:返回地 址、当前现场 ③ ⑥ 恢复:主调程序 现场、返回地址 ④ 处理过程 ⑤
①
输入数据 ② 调用函数 ⑦ 输出 ⑧ 结束
函数结束或 函数值返回
注意:数据的输入、输出一般放在主函数中
函数调用的过程:
void pic(int n){ int k,j; for(int i=0;i<n;i++) { for( k=0;k<10-i;k++) printf(" ") ; for(j=0;j<2*i+1;j++) printf("*"); printf("\n"); }}
三、系统函数 (一)、数学函数 数学函数均包括在头文件“math.h”中 1. 求整型绝对值函数 2. 求实型绝对值函数 int abs(int x) double fabs(double x)
调用函数的过程: ① 为函数的所有形参分配内存单元。 ②计算各个实参表达式的值,一一对应的赋值给相 应形参(若是无参函数,上述过程不执行)。 ③ 进入函数体,执行函数中的语句,实现函数的 功能。 ④执行到return语句时,计算return语句中表达式 的值(若是无返回值函数,本项不做),返回到主 调函数。 ⑤ 释放形参及本函数内的局部变量所占内存, 继续 执行主调函数中的后继语句。
七、函数
1.库函数的正确调用。
2.函数的定义方法。
3.函数的类型和返回值。 4.形式参数与实在参数,参数值的传递。 5.函数的正确调用,嵌套调用,递归调用。 6.局部变量和全局变量。
7.变量的存储类别(自动,静态,寄存器,外 部),变量的作用域和生存期。
8.内部函数与外部函数。
分析:这部分主要讨论函数的相关知识,一般会 出4~5个选择题和3~4个填空题,同时也是编程的 重点。 注:1) 区分 函数之间参数传递的两种方式:传值 和值地址方式。2) 局部变量和全局变量的区别。 3)变量的生存期与作用域。
3、返回语句 形式: return(表达式); 或 return 表达式; 或 return; 功能:使程序控制从被调用函数返回到调用函数中, 同时把返值带给调用函数 说明: 1)函数中可有多个return语句,但只执行一个 2)若无return语句,遇到函数结束的“}”时, 自动返回主调函数 3)若函数类型与return语句中表达式值的类型不 一致,按前者为准,自动转换------函数调用转换
7. 求指数函数(ex)
double exp(double x)
8. 求x的y次方函数(xy)
double pow (double x, double y)
9. 求正弦函数(sin x)
double sin(double x)
10. 求余弦函数(cos x)
double cos(double x)
#include “stdio.h“ int max(int x,int y); void main() { int a,b,c; scanf(“%d%d”,&a,&b); c=max(a,b); printf(“%d”,c); } int max(int x,int y) { return x>y?x:y ; }
非void型函数
函数体中必须有return语句,
void型函数
函数体中return语句可以不出现。若出现, 则不能带表达式。 例 void型函数 void swap(int x,int y ) { int temp; temp=x; x=y; y=temp; }
例 函数返回值类型转换 max(float x, float y) { float z; z=x>y?x:y; return(z); } main() { float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); }
概述
模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块 特点: 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高元件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法: 自上向下,逐步分解,分而治之
C语言是模块化程序设计语言
3. 求小于或等于x的最大整数函数 double floor(double x) 4. 求正平方根函数 double sqrt(double x)
5. 求常用对数函数(lg(x))
double log10(double x)
6. 求自然对数函数(ln(x))
double log (double x)
三、函数调用
形式: 函数名 ( 实际参数表 )
(1) 没有返回值的函数调用格式: 函数名(实际参数表);
(2) 有返回值的函数调用格式:
函数名(实际参数表)
调用方式
函数语句:函数调用可单独成为一个语句 例 output(); printf(“Hello,World!\n”); 函数表达式: 调用函数后的返回值可参加表达式的 计算,这时要求被调函数带返回值。 例 sum=add(a,b); c=fac(n)/(fac(k)*fac(n-k)) ; 函数参数:带返回值的函数调用亦可作为其它函数 的参数(实际参数) 例 printf(“%d”,max(a,b)); m=max(a,max(b,c));
注:
函数调用在前,定义在后,则必须对函数进
行说明,Βιβλιοθήκη Baidu数说明可以放在函数调用之前所在的
函数内,也可以放在源文件开头、函数的外部。
函数说明和函数定义在返回类型、函数名和参
数表上必须要完全一致。
函数说明以分号结束。
【例】函数说明示例
#include “stdio.h" void main() { 省略参数名 int a,b,c; int max(int x,int y); //函数说明,也可int max(int,int); scanf(“%d%d”,&a,&b); c=max(a,b); printf(“%d”,c); } int max(int x,int y) { return x>y?x:y ; }
以是同类型的常量、变量或表达式。
函数定义中的形参只有当发生函数调用时,才被
分配内存单元。
四、函数说明
对被调用函数要求:
必须是已存在的函数
库函数: #include <*.h> 用户自定义函数: 函数类型说明 函数说明 一般形式:
函数类型
函数名(形参类型 [形参名],….. );
作用:告诉编译系统函数类型、参数个数及类型, 以便检验;
#include <stdio.h> 文件包含编译预处理命令 long sum(int a, int b); 函数类型说明 long factorial(int n); main() { int n1,n2; long a; long factorial(int n) long sum(int a, int b); { long rtn=1; scanf("%d,%d",&n1,&n2); int i; a=sum(n1,n2); 函数调用 实参 for(i=1;i<=n;i++) printf("a=%1d",a); rtn*=i; } 函数定义 return(rtn); long sum(int a,int b) } 形参 { long factorial(int n); long c1,c2; c1=factorial(a); 函数调用 c2=factorial(b); return(c1+c2); 函数返回值 }
#include “stdio.h" void main() { pic(4); //以语句形式调用 pic(6); }
函数调用说明:
调用系统函数时,要求在程序的开始用包含命令
# include <头文件名.h>
函数调用时,实参列表中的实参不能带数据类型。 实参与形参的个数、位置与类型必须一致。它可
(三)类型转换函数
类型转换函数包括在不同的头文件中。 1. 将大写字母转换成小写字母函数 int tolower(int x) 2.将小写字母转换成大写字母函数 int toupper(int x) 以上二个函数均包括在头文件“ctype.h”文件中,因 为它们的x可以是“字符型”。
3. 将字符串转换成浮点数函数 double atof(char *x) 4. 将字符串转换成整数函数 double atoi(char *x) 以上二个函数均包括在头文件“math.h”文 件中。
float add(float x, float y) { float z; z=x+y; return(z); } main() { float a,b,c; scanf("%f,%f",&a,&b); c=add(a,b); printf("sum is %f",c); }
被调函数出现在 主调函数之前, 不必函数说明
例例有参函数 有参函数 int max(int x, x,int y) y) int max(int 例 空函数 例 { {无参函数 int z; z; ) int dummy( printstar( ) z=x>y?x:y; { z=x>y?x:y; } 函数体为空 { printf(“********** \n”); } return(z); return(z); } }
二、函数的定义 1. 定义格式 合法标识符
函数类型 函数名(形参类型说明表) { 说明部分 函数体 语句部分 } 函数返回值类型 缺省int型 无返回值void
2. 说明
(1) 函数有“函数头”和“函数体”两部分组成;函数体 由语句和其它分程序组成。 (2)函数类型规定了函数返回值的数据类型,若无返回值 则数据类型为void;如果函数有返回值,则在函数体中 应有一条返回语句“return (表达式);”,无返回值, 则返回语句应为“return;”,也可以省略。 (3)形式参数表是用逗号分隔的若干个形式参数,每个形 参可以是一个变量名、数组名、指针变量名和指针数组名; 形参列表中每个参数的数据类型必须给出。 (4)形式参数可以为空,但圆括号不能省略。 (5)形参若是数组,只需给出数组名,[]中数组长度不需 给出; (6)函数体中不允许再嵌套定义函数
C程序
源程序文件1
源程序文件i
源程序文件n
预编译命令
函数1
函数n
说明部分
执行部分
C是函数式语言 必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main中结束 函数不能嵌套定义,可以嵌套调用
C程序结构
函数分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函数 有参函数
11. 求正切函数(tg x)
double tan(double x) 注:以上三个函数的x都必须是弧度,如果是角 度,可以用“x*3.14159/180”转换成弧度
(二)字符处理函数 字符处理函数均包括在头文件“ctype.h”中
1. 判断是否是英文字母函数 int isalpha(int x) 2. 判断是否是英文小写字母函数 int islower(int x) 3.判断是否是英文大写字母函数 int isupper(int x) 4. 判断是否是数字字符函数 int isdigit(int x)
(四)内存管理函数 内存管理函数包括在头文件“alloc.h”中。
1. 内存分配函数
void *malloc(int size)
2. 内存释放函数
void free(void *clock)
一、函数的概念
函数是一个可以反复使用的程序段,从其它的程序 段中均可以通过调用语句来执行这段程序,完成既定 的工作。 说明: (1) 建立函数称为“函数定义”,使用函数称为“函 数调用” 。 (2) 调用其它函数的函数称为“主调函数”,而被调 用的函数称为“被调函数”。
【例】编写函数,求三个整型参数的最大值。
int max(int x1,int x2,int x3) /*定义函数的返回值类型,函数名,形参*/ { int max; if (x1>x2) max=x1; else max=x2; if (max<x3) max=x3; /*通过比较得到三个数的最大值放到max中*/ return(max); /*返回运算结果*/ }
【例5.2】编一程序,输出如右图形。
将n行构成的三角形独立出来编一函数:
void pic(int n){ int k,j; for(int i=0;i<n;i++) { for( k=0;k<10-i;k++)printf(" ") ; //控制每行输出的起始位 for(j=0;j<2*i+1;j++)printf("*"); printf("\n"); }} void main() { pic(4); pic(6); }
函数调用和返回的过程:
主函数 自定义函数 保存:返回地 址、当前现场 ③ ⑥ 恢复:主调程序 现场、返回地址 ④ 处理过程 ⑤
①
输入数据 ② 调用函数 ⑦ 输出 ⑧ 结束
函数结束或 函数值返回
注意:数据的输入、输出一般放在主函数中
函数调用的过程:
void pic(int n){ int k,j; for(int i=0;i<n;i++) { for( k=0;k<10-i;k++) printf(" ") ; for(j=0;j<2*i+1;j++) printf("*"); printf("\n"); }}