C14第7章 函数(4)

上传人:lcm****801 文档编号:89054568 上传时间:2019-05-16 格式:PPT 页数:28 大小:469.50KB
返回 下载 相关 举报
C14第7章 函数(4)_第1页
第1页 / 共28页
C14第7章 函数(4)_第2页
第2页 / 共28页
C14第7章 函数(4)_第3页
第3页 / 共28页
C14第7章 函数(4)_第4页
第4页 / 共28页
C14第7章 函数(4)_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《C14第7章 函数(4)》由会员分享,可在线阅读,更多相关《C14第7章 函数(4)(28页珍藏版)》请在金锄头文库上搜索。

1、新编C语言程序设计教程 清华大学出版社,周二强 软件学院 计算机科学与工程系 配套视频: 博客: 函数,7.6 库函数简介 7.6.1 getchar函数、getch函数和getche函数 7.6.2 rand函数、srand函数和time函数 7.6.3 字符串处理函数 7.7 综合实例,函数库,函数库是C语言必不可少的补充,常用的有标准输入输出库(stdio.h)、数学函数库(math.h)、标准库(stdlib.h)、日期时间库(time.h)、字符函数库(ctype.h)和字符串处理库(string.h)等。 使用库函数,既可以提高编程效率,又可以提高程序的可靠性。函数库的详细介绍可

2、参考有关资料,本节仅介绍几个常用的库函数。,7.6.1 getchar函数、getch函数和getche函数,getchar函数在stdio.h中声明,getch函数和getche函数在conio.h(控制台输入输出)中声明。getchar函数与getch函数及getche函数功能相似,它们可简单地理解为返回用户输入字符的ASCII码。 不同之处在于:getchar函数使用输入缓冲区,而getch函数和getche函数不使用。 使用缓冲区时? 不使用时?,例7-28 getch函数、getche函数和getchar函数的区别,例7-29 回车键的返回值,键盘上的回车键相当于两个字符,把当前位置

3、移到本行开头的回车符(r)和新起一行并把当前位置移到新行开头的换行符(n)。输入回车键时,getchar函数和getch函数会返回什么字符呢?例7-29可以提供一个参考答案。,return,7.6.2 rand函数、srand函数和time函数,rand函数和srand函数在stdlib.h中声明。rand函数的功能是返回一个0到RANDMAX之间的随机数。RANDMAX为stdlib.h中定义的符号常量,VC6.0中它的值为32767。VC6.0中rand函数所用的算法与例7-16相同。 rand函数在使用时有何问题?,函数rand的问题?,问题的解决?,srand函数的头部为void sr

4、and (unsigned int seed)。调用srand函数可以改变rand函数的种子,从而使rand函数可以产生不同的随机序列。由rand函数的算法可知,在多次调用rand函数产生随机序列之前,仅需调用srand函数几次?,“真正”的随机序列,一次。 虽然srand函数可以使rand函数产生不同的随机序列,但是希望每次执行程序都会得不同的随机序列还并非易事,如何用同一条函数调用语句给rand函数设置不同的种子?srand(?);,“真正”的随机序列,time函数可以解决这个问题。time函数在time.h中声明,它返回从公元1970年1月1日0时0分0秒起到现在(计算机当前的系统时间)

5、所经过的秒数。它常用的调用形式为time(NULL),其中NULL为stdio.h中定义的一个值为0的符号常量。 程序总是在不同的时刻运行,因此,time(NULL)的返回值在每次程序运行时都不相同,把它作为rand函数的种子,就可以保证rand函数在每次程序运行时产生不同的随机序列。 srand (time(NULL);,例7-30 不重复的随机序列,return,7.6.3 字符串处理函数,字符串处理函数用来处理字符串,常用的有strcat函数、strcpy函数、strncpy函数、strcmp函数和strlen函数等,它们都在 string.h中声明。 字符串常存储于字符数组中,因此下面

6、在分析字符串处理函数时用字符数组代替字符串,这里的字符数组实际上为存储在其中的字符串。 如: strcat(字符数组1,字符数组2),strcat函数,的一般形式为:strcat(字符数组1,字符数组2) strcat(string catenate 字符串连接)函数的作用是把字符数组2中的字符串2复制并连接到字符数组1中字符串1的后面,最终,字符数组1中的字符串由字符串1和字符串2连接而成,而字符数组2中的字符串不变。 注意: 字符数组1必须能容纳新的字符串,否则使用该函数的程序将出现问题。,例7-31 strcat函数的使用,strcpy,函数的一般形式为:strcpy(字符数组1,字符数

7、组2) strcpy(string copy 字符串拷贝)函数的功能是将字符数组2中的字符串2拷贝到字符数组1中,最终,两个数组中的字符串均为字符串2。 此函数同样要求字符数组1能容纳新的字符串。如有char str111=“I love C!“,str2=“Hehe“;,当执行完strcpy(str1,str2)后,字符数组str1的变化如图7-9所示。,注意,不能用字符串常量给字符数组赋值,也不能用一个字符数组给另一个字符数组赋值,如语句str1=“come on! “;或str1=str2;都是错误的。 字符串的赋值操作需用strcpy函数,正确的作法为:strcpy(str1, “co

8、me on! “);或strcpy(str1,str2);。 可以用字符串常量初始化字符数组, 如语句char str1=“come on! “;,strncpy函数,的一般形式为:strncpy(字符数组1, 字符数组2, n) strncpy函数的功能是把字符数组2中所含字符串2的前n个字符复制到字符数组1的起始部分。特别注意:该函数不会在复制的字符后加0字符,但是字符串2的长度小于n时,会以0 字符填充字符数组1直到复制完n个字符。此函数要求字符数组1的长度至少为n。 如有char str111=“I love C! “, str2=“Hehe“;,则执行完语句strncpy(str1,

9、 str2, 2);后, 字符数组str1中的字符串为“Helove C! “。,strncpy函数,如果执行了语句strncpy(str1,str2,7);则字符数组str2中的字符串为“Hehe“,其状态如图7-11所示。,strcmp函数,的一般形式为:strcmp(字符数组1,字符数组2) strcmp(string compare 字符串比较)函数的功能为比较两个字符数组中所含字符串的大小,如果字符数组1中的字符串大于字符数组2中的字符串则返回一个正整数;如果等于,则返回0;如果小于,则返回一个负整数,具体的返回值可参考例6-13。该函数常用的方式为; if(strcmp(str1,

10、 str2) 0) printf(“%s大于%sn“,str1,str2);,strlen函数,的一般形式为:strlen(字符数组) strlen(string length字符串长度)函数的功能是测试字符数组中字符串的长度,它返回有效长度而非实际长度,即不计算末尾字符0。如strlen(“China“)的值为5,而sizeof(“China“)的值为6。,return,7.7 综合实例,例7-32 确定公元y年m月d日是星期几。 分析: 已知公元1年1月1日是星期一,则再过7天、14天7*n天后仍是星期一,因此只要求出公元1年1月1日到公元y年m月d日有多少天,设有x天,再计算x%7的值,

11、若结果是0,则公元y年m月d日为星期天,否则结果为几,公元y年m月d日就是星期几。如公元1年1月1日到公元1年1月20日有20天,则1年1月20日为星期(20%7=)6 。,例7-32确定公元y年m月d日是星期几,算法如下: 第一步,请用户输入年(year),月(month),日(day); 第二步,判断year年month月day日的合法性; 第三步,求出从1年1月1日到(year-1)年12月31日有多少天; 第四步,求出从year年1月1日到year年month月day日有多少天; 第五步,把第三步和第四步求出的天数累加起来,累加和与7进行模运算,并根据运算结果判断出year年month

12、月day日为星期几。,设首部为int check(int y,int m,int d)的check函数可以检测出日期数据的合法性,如果y年m月d日是合法的日期check函数返回1,否则返回0。 设首部为int daysOfYears(int year)的daysOfYears函数可以返回1年1月1日至year年12月31日有多少天。 设首部为int daysOfThisYear(int y,int m,int d)的daysOfThisYear函数可以返回y年1月1日至y年m月d日有多少天。,例7-32确定公元y年m月d日是星期几,check函数,日期合法性的检查内容主要是月份值应在1到12之

13、间,每月的天数应不超过该月的最大天数。在工程7_32中加入名为7_3202.c的源文件,其内容如下:,daysOfYears函数,天数需从1年累加到year年,平年为365天,闰年为366天,但是考虑到最终的天数要与7进行模运算,余数才是关键,因此没有必要累加出实际天数,只需累加实际天数除以7所得的余数即可,也就是平年按(365%7)1天计算,闰年按2天计算。在工程7_32中加入名为7_3203.c的源文件,其内容如下:,daysOfThisYear函数,计算天数时先把1月至(m-1)月的天数累加起来,再加上d的值即可。在工程7_32中加入名为7_3204.c的源文件,其内容如下:,return,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号