编写一个函数findStr(),该函数的功能是:统计一个以单词组成的字符串中(各单词之间以空格隔开)所含指定长度单词的个数。例如,输入字符串为“you are very goodyou”,指定要查找的单词的长度为3,则函数返回值是3。 函数read

admin2013-12-17  37

问题 编写一个函数findStr(),该函数的功能是:统计一个以单词组成的字符串中(各单词之间以空格隔开)所含指定长度单词的个数。例如,输入字符串为“you are very goodyou”,指定要查找的单词的长度为3,则函数返回值是3。
    函数readWriteData()的功能是从IN.DAT中读取字符串和子字符申,并把统计结果输出到屏幕和文件OUT.DAT中。
注意:部分源程序已给出。
    请勿改动主函数main()和函数readWriteData()中的内容。
    试题程序:
    #include
    #include
    #include
    void readWriteData();
    int findStr(char*slr,int find_len)
    {
    }
    void main()
    {
    readWriteData();
    }
    void readWriteData()
    {
    char str[81].substr[11];
    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=substr[0]—’0’;
    n=findStr(Str,1en);
    fprintf(wf,“%d\n”,n);
    fclose(rf);
    fclose(wf);
    }

选项

答案int findStr(char*str,int find_len) { int str_len,i,count=0,mark=-1; str_len=strlen(str);//求出字符串的长度 for(i=0;i’z’||*(str+i)<’A’||(*(str +i)>’Z’&&*(str+i)<’a’)) /*如果是非字母符号*/ { if(i-mark==find_len+1)count++; //如果两个非字母符号当中的字母个数等 于所要查找的长度,则将计数器加1 mark=j,//将j记成标记 } } if(mark
解析 本题主要考查如何在字符串中找单词。本程序将单词界定为;两个相邻的非字母符号间的字母为一个单词。所以在程序中通过找两个非字母符号之间字母的个数来确定单词的长度。如果单词长度等于要求查找的长度,则将计数器加1。在查找时应注意一行中的第一个单词和最后一个单词的特殊性,它们只有一侧有非字母符号,故要将其单独处理。
转载请注明原文地址:https://kaotiyun.com/show/8AZZ777K
0

最新回复(0)