第九次上机实验-正整数和单词倒排.ppt_第1页
第九次上机实验-正整数和单词倒排.ppt_第2页
第九次上机实验-正整数和单词倒排.ppt_第3页
第九次上机实验-正整数和单词倒排.ppt_第4页
第九次上机实验-正整数和单词倒排.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

上机 分离单词加倒序7 32正整数据问题18 2425连续5个整数问题 2642 级数问题 156367 两数组组合 7475连续5个整数问题 7677889293 Fibonacci数列F n 字符串 单词 的倒置和删除 正整数问题 函数ReadDat 实现从文件IN DAT中读取一篇英文文章存入到字符串数组xx中 请编制函数StrOL 其函数的功能是 以读入文章的行为单位 以空格或标点符号 数据文件中仅含 或 作为标点符号 作为分隔符 对行中所有单词进行倒排 单词间仍以空格作为分隔符 之后把已处理的字符串 应不含标点符号 仍按行重新存入字符串数组xx中 最后main 函数调用函数WriteDat 把结果xx输出到文件OUT DAT中 例如 原文 YouHeMeIamastudent Ilikestudy 结果 MeHeYoustudylikeIstudentaamI原始数据文件存放的格式是 每行的宽度均小于80个字符 含标点符号和空格 注意 部分源程序存放在PROG1 C中 请勿改动主函数main 读数据函数ReadDat 和输出数据函数WriteDat 的内容 include include includecharxx 50 80 intmaxline 0 文章的总行数 intReadDat void voidWriteDat void voidStrOL void voidmain system CLS if ReadDat printf 数据文件IN67 DAT不能打开 n 007 return StrOL WriteDat intReadDat void FILE fp inti 0 char p if fp fopen IN67 DAT r NULL return1 while fgets xx i 80 fp NULL p strchr xx i n if p p 0 i maxline i fclose fp return0 voidWriteDat void FILE fp inti system CLS fp fopen OUT67 DAT w for i 0 i maxline i printf s n xx i fprintf fp s n xx i fclose fp YouHeMeIamastudent Y o u H e M e 清空word Xx i strcat word 分离第二个单词 空格 H e word strcat word 0 问题的关键如何分离单词 如何判断字符串分离结束 Y o u H e M e p 定义指向字符的指针变量pp指向第一个字符p xx i xx i 当 p是字母的时候 P向后移动 否则表示一个单词的结束 while isalpha p word j p 代码 voidStrOL void charline 80 word 80 p inti j for i 0 i maxline i line 0 0 word 0 0 p xx i j 0 while p while isalpha p word j p word j 0 strcat word strcat word line strcpy line word word 0 0 j 0 while p 依次取出行xx i 中的每一个字符 p 判断字符 p是否是字母 如何是字母则把该字母 p依次连接到中间变量word中 2 再word后添上一个空格 再把字符串变量line中的单词连接到word后 把word字符串拷贝到line中实现反向存放 再把word字符串清空 读取行中连续不是字母的字符 判断是否是字符串结束 如果没有结束 则继续循环 一行单词分离倒序完成把临时变量line中的字符串拷贝到xx i 中 初始化line word 函数ReadDat 实现从文件IN DAT中读取一篇英文文章存入到字符串数组xx中 请编制函数StrOR 其函数的功能是 以该文章中的行为单位依次扫描一行字符串中的小写字母o 每次将小写母o的左右字符串部分作交叉换位 即左边字符串移到小写字母o的右边 而原先右边的则反之 并把小写母o删除 依次直至这一行中的小写母o处理完 之后把已处理的字符串仍按行重新存入字符串数组xx中 最后main 函数调用函数WriteDat 把结果xx输出到文件OUT DAT中 例如原文 youhavethecorrectrecord 第1个o uhavethecorrectrecord y第2个o rrectrecord yuhavethec第3个o rd yuhavethecrrectrec提示 可使用临时变量来保存小写字母o左边的字符串 原始数据文件存放的格式是 每行的宽度均小于80个字符 含标点符号和空格 注意 部分源程序存放在PROG1 C中 请勿改动主函数main 读数据函数ReadDat 和输出数据函数WriteDat 的内容 07套 include includecharxx 50 80 intmaxline 0 文章的总行数 intReadDat void voidWriteDat void voidStrOR void voidmain if ReadDat printf 数据文件IN DAT不能打开 n 007 return StrOR WriteDat intReadDat void FILE fp inti 0 char p if fp fopen c test IN DAT r NULL return1 while fgets xx i 80 fp NULL p strchr xx i n if p p 0 i maxline i fclose fp return0 voidWriteDat void FILE fp inti fp fopen c test OUT DAT w for i 0 i maxline i printf s n xx i fprintf fp s n xx i fclose fp 分析 hehavethecorrectrecord xx i 如何在字符串中查找 o 字符 p strchr xx i o 返回 o 字符的指针 hehavethecorrectrecord p xx i after rrectrecord hehavethec before strcpy xx i after strcat xx i befor rrectrecord hehavethec xx i 代码 voidStrOR void inti charbefore 80 after 80 p for i 0 i maxline i p strchr xx i o while p strcpy after p 1 p 0 strcpy before xx i strcpy xx i after strcat xx i before p strchr xx i o 1 利用for循环依次读取文章中的所有行 在读取过程中 并对所读取的字符串xx i 进行处理 2 找出小写字母 o 如果存在 则通过中间变量来保存字符串 before是保存字母 o 左边的字符串 after是保存字母 o 右边的字符串 接着把两个字符串before和after字符串仍加到原字符串上xx i 直到处理完行中所有的字母 o 为止 正整数 完全平方数 程序PROG1 C的功能是 在三位整数 100至999 中寻找符合下面条件的整数 并依次从小到大存入数组b 中 条件如下 某数既是完全平方数 又有两位数字相同 例如144 676等 请考生编制函数intjsValue intbb 实现此功能 满足该条件的整数的个数通过所编制的函数返回 最后调用函数writeDat 把结果输出到文件out dat中 注意 部分源程序存放在PROG1 C中 请勿改动主函数main 和写函数writeDat 的内容 第18套 includevoidwriteDat intnum intb intjsValue intbb voidmain intb 20 num num jsValue b writeDat num b voidwriteDat intnum intb FILE out inti out fopen c test out dat w fprintf out d n num for i 0 i num i fprintf out d n b i fclose out 分析 100 999中找完全平方数设i为平方根则i取值范围10 int sqrt 999 之间设n i i 则n为完全平方数n有两位数字相同 则需要把n按位进行数字分离g n 10s n 10 10h n 100 g s g h s h 0 代码 intjsValue intbb intn k a b c cnt 0 for k 10 k int sqrt 999 k n k k a n 100 b n 100 10 c n 10 if a b a c b c 0 printf N d d d n n k k bb cnt n returncnt 注意增加头文件 include 连续比较大小整数问题 已知数据文件IN DAT中存有200个四位数 并已调用读函数readDat 把这些数存入数组a中 请考生编制一函数jsVal 其功能是 依次从数组a中取出一个四位数 如果该四位数大于该四位数以后的连续五个数且该数是奇数 该四位数以后不满五个数 则不统计 则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中 最后调用写函数writeDat 把结果cnt以及数组b中符合条件的四位数输出到OUT DAT文件中 注意 部分源程序存在文件PROG1 C文件中 程序中已定义数组 a 200 b 200 已定义变量 cnt请勿改动数据文件IN DAT中的任何数据 主函数main 读函数readDat 和写函数writeDat 的内容 24套 include defineMAX200inta MAX b MAX cnt 0 voidwriteDat voidjsVal voidreadDat inti FILE fp fp fopen c test in dat r for i 0 i MAX i fscanf fp d voidmain inti readDat jsVal printf 满足条件的数 d n cnt for i 0 i cnt i printf d b i printf n writeDat voidwriteDat FILE fp inti fp fopen c test out dat w fprintf fp d n cnt for i 0 i cnt i fprintf fp d n b i fclose fp 如何从一组数据中取出符合条件的数存入指定的数组中并统计出这些数的个数 最后对数组中的数值按升序排序 程序的流程如下 1 利用for循环语句 依次取出每一数a i 再对其进行条件判断 是否连续大于a i 以后的五个数并且a i 是奇数 如果满足条件 则把a i 依次存入数组b中 并将统计个数cnt加1 2 利用二重for循环语句对数组b中的值按升序排序 代码 voidjsVal inti j ab for i 0 ia i 1 对前MAX 5个数据进行处理需要循环实现循环变量I0 MAX 5 在循环体内判断a i 与连续5个数的关系并且a i 为奇数条件成立cnt自增 并保存到b数组中 循环结束后 b数组保存了需要的数据cnt保存了满足条件的个数然后对b数组进行从小到大排序 某级数的前两项A1 1 A2 1 以后各项具有如下关系 An An 2 2An 1下列程序的功能是 要求依次对于整数M 100 1000和10000求出对应的n值 使其满足 Sn M 这里Sn A1 A2 An 并依次把n值存入数组单元b 0 b 1 和b 2 中 请编制jsValue 函数来实现此功能 最后调用函数writeDat 把数组b 中的值输出到out dat文件中 注 在该题中主要就是要正确简捷的表示出各项的关系 42 给定源程序 includeintb 3 voidwriteDAT voidjsValue main jsValue printf M 100 n d nM 1000 n d nM 10000 n d n b 0 b 1 b 2 writeDAT voidwriteDAT FILE fp fp fopen c test out dat w fprintf fp d n d n d n b 0 b 1 b 2 fclose fp 分析 某级数的前两项A1 1 A2 1 以后各项具有如下关系 An An 2 2An 1 Sn A1 A2 An 要判断Sn M 必须求得Sn 求Sn实际是求累加和问题 设a1 1 a2 1 s 2 n 2while s M t a1

温馨提示

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

评论

0/150

提交评论