




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
新编C语言程序设计教程清华大学出版社 周二强zeq 软件学院计算机科学与工程系配套视频 博客 第7章函数 7 6库函数简介7 6 1getchar函数 getch函数和getche函数7 6 2rand函数 srand函数和time函数7 6 3字符串处理函数7 7综合实例 函数库 函数库是C语言必不可少的补充 常用的有标准输入输出库 stdio h 数学函数库 math h 标准库 stdlib h 日期时间库 time h 字符函数库 ctype h 和字符串处理库 string h 等 使用库函数 既可以提高编程效率 又可以提高程序的可靠性 函数库的详细介绍可参考有关资料 本节仅介绍几个常用的库函数 7 6 1getchar函数 getch函数和getche函数 getchar函数在stdio h中声明 getch函数和getche函数在conio h 控制台输入输出 中声明 getchar函数与getch函数及getche函数功能相似 它们可简单地理解为返回用户输入字符的ASCII码 不同之处在于 getchar函数使用输入缓冲区 而getch函数和getche函数不使用 使用缓冲区时 不使用时 例7 28getch函数 getche函数和getchar函数的区别 例7 29回车键的返回值 键盘上的回车键相当于两个字符 把当前位置移到本行开头的回车符 r 和新起一行并把当前位置移到新行开头的换行符 n 输入回车键时 getchar函数和getch函数会返回什么字符呢 例7 29可以提供一个参考答案 return 7 6 2rand函数 srand函数和time函数 rand函数和srand函数在stdlib h中声明 rand函数的功能是返回一个0到RANDMAX之间的随机数 RANDMAX为stdlib h中定义的符号常量 VC6 0中它的值为32767 VC6 0中rand函数所用的算法与例7 16相同 rand函数在使用时有何问题 函数rand的问题 问题的解决 srand函数的头部为voidsrand unsignedintseed 调用srand函数可以改变rand函数的种子 从而使rand函数可以产生不同的随机序列 由rand函数的算法可知 在多次调用rand函数产生随机序列之前 仅需调用srand函数几次 真正 的随机序列 一次 虽然srand函数可以使rand函数产生不同的随机序列 但是希望每次执行程序都会得不同的随机序列还并非易事 如何用同一条函数调用语句给rand函数设置不同的种子 srand 真正 的随机序列 time函数可以解决这个问题 time函数在time h中声明 它返回从公元1970年1月1日0时0分0秒起到现在 计算机当前的系统时间 所经过的秒数 它常用的调用形式为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中声明 字符串常存储于字符数组中 因此下面在分析字符串处理函数时用字符数组代替字符串 这里的字符数组实际上为存储在其中的字符串 如 strcat 字符数组1 字符数组2 strcat函数 的一般形式为 strcat 字符数组1 字符数组2 strcat stringcatenate字符串连接 函数的作用是把字符数组2中的字符串2复制并连接到字符数组1中字符串1的后面 最终 字符数组1中的字符串由字符串1和字符串2连接而成 而字符数组2中的字符串不变 注意 字符数组1必须能容纳新的字符串 否则使用该函数的程序将出现问题 例7 31strcat函数的使用 strcpy 函数的一般形式为 strcpy 字符数组1 字符数组2 strcpy stringcopy字符串拷贝 函数的功能是将字符数组2中的字符串2拷贝到字符数组1中 最终 两个数组中的字符串均为字符串2 此函数同样要求字符数组1能容纳新的字符串 如有charstr1 11 IloveC str2 Hehe 当执行完strcpy str1 str2 后 字符数组str1的变化如图7 9所示 注意 不能用字符串常量给字符数组赋值 也不能用一个字符数组给另一个字符数组赋值 如语句str1 comeon 或str1 str2 都是错误的 字符串的赋值操作需用strcpy函数 正确的作法为 strcpy str1 comeon 或strcpy str1 str2 可以用字符串常量初始化字符数组 如语句charstr1 comeon strncpy函数 的一般形式为 strncpy 字符数组1 字符数组2 n strncpy函数的功能是把字符数组2中所含字符串2的前n个字符复制到字符数组1的起始部分 特别注意 该函数不会在复制的字符后加 0 字符 但是字符串2的长度小于n时 会以 0 字符填充字符数组1直到复制完n个字符 此函数要求字符数组1的长度至少为n 如有charstr1 11 IloveC str2 Hehe 则执行完语句strncpy str1 str2 2 后 字符数组str1中的字符串为 HeloveC strncpy函数 如果执行了语句strncpy str1 str2 7 则字符数组str2中的字符串为 Hehe 其状态如图7 11所示 strcmp函数 的一般形式为 strcmp 字符数组1 字符数组2 strcmp stringcompare字符串比较 函数的功能为比较两个字符数组中所含字符串的大小 如果字符数组1中的字符串大于字符数组2中的字符串则返回一个正整数 如果等于 则返回0 如果小于 则返回一个负整数 具体的返回值可参考例6 13 该函数常用的方式为 if strcmp str1 str2 0 printf s大于 s n str1 str2 strlen函数 的一般形式为 strlen 字符数组 strlen stringlength字符串长度 函数的功能是测试字符数组中字符串的长度 它返回有效长度而非实际长度 即不计算末尾字符 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的值 若结果是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月day日为星期几 设首部为intcheck inty intm intd 的check函数可以检测出日期数据的合法性 如果y年m月d日是合法的日期check函数返回1 否则返回0 设首部为intdaysOfYears intyear 的daysOfYears函数可以返回1年1月1日至year年12月31日有多少天 设首部为intdaysOfThisYear inty intm intd 的daysOfThisYear函数可以返回y年1月1日至y年m月d日有多少天 例7 32确定公元y年m月d日是星期几 check函数 日期合法性的检查内容主要是月份值应在1到12之间 每月的天数应不超过该月的最大天数 在工程7 32中加入名为7 3202 c的源文件 其内容如下 daysOfYears函数 天数需从1年累加到year年 平年为365天 闰年为366天 但是考虑到最终的天数要与7进行模运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人融资担保协议二零二五年
- 公司股份分配协议书二零二五年
- 2合伙人合同样本
- 借用协议合同样本
- 六年级体育教案
- 乳品销售合同样本
- 二十类典型合同样本
- 个人雇短工合同样本
- 学习房地产项目工程质量管理与监控心得
- 2025物业管理合同协议范本
- 2023年北京市农林科学院事业单位招聘(共500题含答案解析)笔试历年难、易错考点试题含答案附详解
- 尿崩症诊疗规范内科学诊疗规范诊疗指南2023版
- 3D打印实训指导书
- 除草机器人简介
- 当代文学第一章1949-1966年的文学思潮
- 抽油井检泵作业课件
- a320飞机空调系统工作原理与使用维护分析
- 施工机具进场检查验收记录
- 《液压与气动技术项目教程》高职配套教学课件
- 2022年七步洗手法操作考核评分标准
- 过敏性紫癜的护理PPT课件(PPT 33页)
评论
0/150
提交评论