1、计算机三级网络技术机试(上机操作)模拟试卷 43及答案与解析 一、程序设计题 1 编写一个函数 findStr(),该函数的功能是:统计一个以单词组成的字符串中 (各单词之间以空格隔开 )所含指定长度单词的个数。例如,输入字符串为 “you are very goodyou”,指定要查找的单词的长度为 3,则函数返回值是 3。 函数 readWriteData()的功能是从 IN DAT中读取字符串和子字符申,并把统计结果输出到屏幕和文件 OUT DAT中。 注意:部分源程序已给出。 请勿改动主函数 main()和函数 readWriteData()中的内容。 试题程序: #include #
2、include #include void readWriteData(); int findStr(char*slr, int find_len) void main() readWriteData(); void readWriteData() char str81 substr11; int n, 1en FILE*rf *wf; rf=fopen(“1N DAT”, “r”); wf=fopen(“OUT DAT”, “W”); fgets(str, 80, rf); fgets(substr, 10 rf); len=substr00; n=findStr(Str, 1en); fp
3、rintf(wf, “ d n”, n); fclose(rf); fclose(wf); 计算机三级网络技术机试(上机操作)模拟试卷 43答案与解析 一、程序设计题 1 【正确答案】 int findStr(char*str, int find_len) int str_len, i, count=0, mark=-1; str_len=strlen(str);求出字符串的长度 for(i=0; iz *(str+i)Z *(str+i)a) *如果是非字母符号 * if(i-mark=find_len+1)count+; 如果两个非字母符号当中的字母个数等 于所要查找的长度,则将计数器加 1 mark=j,将 j记成标记 if(markstr_len-1 str_len-1-mark=find _len)count+; 如果是最后一个 单词,当其长度等于所要查找的 长度时就将计数器加 1 return count; 【试题解析】 本题主要考查如何在字符串中找单词。本程序将单词界定为;两个相邻的非字母符号间的字母为一个单词。所以在程序中通过找两个非字母符号之间字母的个数来确定单词的长度。如果单词长度等于要求查找的长度,则将计数器加 1。在查找时应注意一行中的第一个单词和最后一个单词的特殊性,它们只有一侧有非字母符号,故要将其单独处理。