第14讲常用系统函数_第1页
第14讲常用系统函数_第2页
第14讲常用系统函数_第3页
第14讲常用系统函数_第4页
第14讲常用系统函数_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京理工大学珠海学院 第第14讲讲 常用系统函数常用系统函数 n内容内容 系统函数概述系统函数概述 数学函数数学函数 字符串函数字符串函数 动态内存分配函数动态内存分配函数 北京理工大学珠海学院 系统函数概述系统函数概述 n函数是构成函数是构成C语言的基本模块。语言的基本模块。 n函数可以被重复使用。函数可以被重复使用。 nC语言标准中规定了大量的系统函数。语言标准中规定了大量的系统函数。 n程序中许多必不可少的功能要由系统函数程序中许多必不可少的功能要由系统函数 实现。如格式化输入和输出实现。如格式化输入和输出 (如何写?如何写?)。 n学习使用系统函数是学习使用系统函数是C语言学习的重要任

2、语言学习的重要任 务。务。 北京理工大学珠海学院 系统函数概述系统函数概述 n由于系统函数定义在系统文件中,在我们由于系统函数定义在系统文件中,在我们 的代码中没有申明。的代码中没有申明。 n如果要编译通过,要申明这些函数的原型。如果要编译通过,要申明这些函数的原型。 n用用#include 可以让我们的代码不需要定义复杂的系统可以让我们的代码不需要定义复杂的系统 函数原型就能使用这些函数函数原型就能使用这些函数 北京理工大学珠海学院 数学函数数学函数 n主要用来计算三角函数值、指数、对主要用来计算三角函数值、指数、对 数、乘方、开方、舍入或取绝对值。数、乘方、开方、舍入或取绝对值。 n需要在

3、程序文件开头,写:需要在程序文件开头,写: #include n共同点:参数和返回值类型都是共同点:参数和返回值类型都是 double。一般只有一个参数。一般只有一个参数。(P186) 北京理工大学珠海学院 数学函数数学函数 n三角函数:三角函数:sin, cos, tan, asin, acos, atan; n开平方:开平方:sqrt n乘方:乘方:double pow(double x, double y); (返回返回x的的y次方,故有两个参数次方,故有两个参数) n指数:指数:exp, exp2, exp10 n对数:对数:log, log2, log10 北京理工大学珠海学院 数学

4、函数数学函数 n取绝对值:取绝对值:fabs n舍入:舍入:ceil, floor, round, trunc 例例19-1:编写一个程序,输入一个浮点:编写一个程序,输入一个浮点 数,然后计算该数用各种舍入方法得数,然后计算该数用各种舍入方法得 到的结果,并显示出来。到的结果,并显示出来。 北京理工大学珠海学院 #include #include /使用数学函数必须包括此行 int main(void) double x; printf(请输入要计算的浮点数:); scanf(%lf, printf(ceil(x) = %f;n, ceil(x); printf(floor(x) = %f;

5、n, floor(x); printf(round(x) = %f;n, round(x); printf(trunc(x) = %f;n, trunc(x); return 0; 北京理工大学珠海学院 字符串函数字符串函数 n常用的可以分为三类:常用的可以分为三类: 字符串处理:合并、拷贝、部分拷贝、字符串处理:合并、拷贝、部分拷贝、 求字符串长度、查找字符等。求字符串长度、查找字符等。 输入输入/输出输出 字符串转换字符串转换(为其他类型为其他类型) 北京理工大学珠海学院 字符串函数字符串函数 n字符串处理函数中,普遍使用字符指针做参数或字符串处理函数中,普遍使用字符指针做参数或 者返回值

6、。者返回值。 n字符串处理函数:表字符串处理函数:表19-2(P188) n必须有:必须有: #include 例例19-2 编写一个程序,验证编写一个程序,验证strlen、strcpy、 strncpy、strcat、strcmp等函数的功能。等函数的功能。 北京理工大学珠海学院 #include #include int main(void) char str120 = abcdefg, str20 = abcdefg; char *str2 = hijklmn; printf(str1 is: %sn, str1); printf(str2 is: %sn, str2); printf

7、(strlen(str1): %dn, strlen(str1); printf(strcmp(str1, str2): %dn, strcmp(str1, str2); printf(or strncmp(str1, str2, 4): %dn, strncmp(str1, str2, 4); strcpy(str1,str2); printf(after strcpy(str1, str2), str1 is: %sn, str1); strcpy(str1, str); /恢复str1原值以便比较 strncpy(str1, str2,3); printf(or after strncp

8、y(str1, str2, 3), str1 is: %sn, str1); strcpy(str1, str);/恢复str1原值以便比较 strcat(str1, str2); printf(after strcat(str1, str2), str1 is: %sn, str1); strcpy(str1, str);/恢复str1原值以便比较 strncat(str1, str2, 3); printf(or after strncat(str1, str2, 3), str1 is: %sn, str1); return 0; 北京理工大学珠海学院 字符串函数字符串函数 n字符串输入

9、字符串输入/输出函数:输出函数:gets, puts n类似的,字符输入类似的,字符输入/输出函数:输出函数: getc, putc, getchar, putchar (参考参考P319附录附录D) n必须包含:必须包含: #include 北京理工大学珠海学院 字符串函数字符串函数 n字符串转换函数:字符串转换函数:atoi, atof, atol n必须包含:必须包含: #include 例例19-3 编写一个加法器,从命令行获编写一个加法器,从命令行获 取两个数,将它们相加的结果显示出取两个数,将它们相加的结果显示出 来。来。 北京理工大学珠海学院 #include #include

10、int main(int argc, char *args) if(argc = 3) double x = atof(args1); double y = atof(args2); printf(%f + %f = %f n, x, y, x + y); else printf(请在命令行输入两个数值参数!); return 0; 北京理工大学珠海学院 动态内存分配函数动态内存分配函数 n在在C语言程序中,申明一个变量或者数语言程序中,申明一个变量或者数 组,程序执行时就会自动分配相应的组,程序执行时就会自动分配相应的 内存。例如:内存。例如: int age; /自动为自动为age分配内存

11、分配内存 scanf(“%d”, 北京理工大学珠海学院 动态内存分配函数动态内存分配函数 int getAge() int age; printf(“Input your age:”); scanf(“%d”, return age; int getAge() int age, *pAge; pAge = scanf(“%d”, pAge); return *pAge; 程序自动为age变量分配存储单元,在函数结束时,自动释 放分配的内存 北京理工大学珠海学院 动态内存分配函数动态内存分配函数 nC语言系统函数语言系统函数 中,有一类函数中,有一类函数 可以动态分配一可以动态分配一 块内存,并

12、返回块内存,并返回 内存块的首地址。内存块的首地址。 n上面代码可改为:上面代码可改为: int getAge() int *pAge; pAge = (int *)malloc(4); printf(“Input your age:”); scanf(“%d”, pAge); return *pAge; 北京理工大学珠海学院 动态内存分配函数动态内存分配函数 n代码中,代码中,malloc函数为系统函数函数为系统函数 n该函数分配一块指定大小的内存,并返回首地址该函数分配一块指定大小的内存,并返回首地址 n类似的还有类似的还有calloc函数函数(p191见表见表19-5) n用以上两个函数

13、分配的内存,不能在程序执行到用以上两个函数分配的内存,不能在程序执行到 离开代码块(变量的有效范围)时自动释放离开代码块(变量的有效范围)时自动释放 nfree函数用来人工释放用上述函数动态分配的内函数用来人工释放用上述函数动态分配的内 存存 北京理工大学珠海学院 动态内存分配函数动态内存分配函数 n此外,此外,realloc函数相当于先调用函数相当于先调用free函数,函数, 再调用再调用malloc函数函数 n必须包含:必须包含: #include n上述分配内存的函数的返回值为上述分配内存的函数的返回值为 void * 类型。它表示一个类型。它表示一个抽象的指针类型抽象的指针类型,即可以

14、,即可以 是是任何指针类型任何指针类型。 北京理工大学珠海学院 动态内存分配函数动态内存分配函数 n如果知道其具体类型,可以用强制类如果知道其具体类型,可以用强制类 型转换方式进行转换才能确保无错。型转换方式进行转换才能确保无错。 n强制类新转换的写法:强制类新转换的写法: (T)O n即将即将O类型强制转换为类型强制转换为T类型。例如:类型。例如: int *pAge = (int *)malloc(4); 北京理工大学珠海学院 动态内存分配函数动态内存分配函数 n例例19-4 编写一编写一 个程序,根据个程序,根据 用户输入的学用户输入的学 生人数创建学生人数创建学 生成绩数组,生成绩数组

15、, 提示用户输入提示用户输入 学生成绩并显学生成绩并显 示这些成绩。示这些成绩。 #include #include int main(void) int i, num; printf(请输入学生人数:); scanf(%d, double *scores = (double *)calloc(num, sizeof(double); /可以使用下面这一行代替上一行,其他地方不变。下面的写法使用了动态数组: /double scoresnum; for(i=0; inum; i+) printf(输入第%d个学生的成绩:, i+1); scanf(%lf, scores+i); for(i=0

16、; inum; i+) printf(您输入的第%d个学生的成绩为:%fn, i+1, *(scores+i); free(scores); /本例中,可以不显式地释放内存,即省略此行。 return 0; 北京理工大学珠海学院 动态内存分配函数动态内存分配函数 n用动态内存分配函数人工分配内存在实际的用动态内存分配函数人工分配内存在实际的 编程中常用编程中常用 n要点是,在内存紧张时要及时释放(不需要要点是,在内存紧张时要及时释放(不需要 时就释放,用时就释放,用free函数)函数) n如果不释放,程序结束时才会释放。但是,如果不释放,程序结束时才会释放。但是, n如果程序需要长期运行,不及时释放人工分如果程序需要长期运行,不及时释放人工分 配的内存可能导致程序崩溃。配的内存可能导致程序崩溃。 北京理工大学珠海学院 本次课小

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论