高级语言程序设计(一)
(C Programming)
第四讲:程序设计方法-模块化与
算法设计
本章目标
?
进一步掌握模块化设计思想
???
掌握常用的数据查找及排序方法了解全局变量
了解递归程序设计思想
问题4.1
【问题描述】
从文件中查找包含给定字符串的行。【输入形式】
从标准输入中分两行分别输入被查找的文件及要查找的字符串(中间不含空格)。【输出形式】
在屏幕上输出文件中包含给定字符串的行。【样例输入】
在键盘输入如下文件名及字符串:
test.txtthe
文件test.txt内容如下:Now is the timefor all good
men to come to the aidof their party【样例输出】
屏幕输出为:this is the time
men to come to the aidof their party
问题4.1:算法设计
?设int index ( char s[ ], char t[ ] )函数用来在字符串s中查找字符串t。若找到则反回t在s中出现的位置,否则返回-1。其主要查找算法如下:012遍历输入字符串中每个字符输入串依次与给定串中给定串给定串…每个字符比较。0011j为s中每次开始在字符串s中查找字符串t :比较的位置。for(i=0; s[i] != ?\\0?; i++)for(j=i,k=0; t[k] != ?\\0; j++,k++)s[j]和t[k]进行比较不同时break;找到的条件是:t[k]==?\\0?主要算法分析问题4.1:算法设计(续)
如何从文件中读入一行?主要算法如下:char *fgets(char *s, int n, FILE *fp)从fp上最多读入n-1个字符,放入s 字符数组中。返回s或NULL设变量filename,s,line分别用于存储文件名、查找串及文件中一行;从标准输入中读入文件名和要查找的串到filename和s中;以读方式打开文件filename;while 文件中还有内容时读一行到line中如果index(line, s) >= 0输出line;