2018-12-02洛谷P1308统计单词数

这道题参考了一位dalao的题解,收获很多
附上dalao题解的链接:https://www.luogu.org/blog/user11765/solution-p1308

那总的思路也就是
1、将输入的单词和文章都转化为小写字母,这个可以使用C语言自带的tolower函数,记得加上头文件#include
2、我们可以写一个函数用来查找单词的位置,可以用#include 里头的strstr(str1,str2)函数,这个函数可以用来查找str2是不是str1的子串,如果是它的子串,那么就会返回第一个字母相同时的位置,若果不是的话就会返回NULL

特别注意

注意全局变量和局部变量的定义,比如说输入的单词和文章,应该用全局变量,因为不仅仅在main函数重要使用到他们,我们自己定义的函数中也要用到他们

附上代码:

#include 
#include 
#include 
#include 

char s[11],k[1000001];
int count=0,flag=-1;

void find();
void find(char i[])
{
    char *p=strstr(i,s);
    int length=strlen(s);
    if(p!=NULL)
    {
        if(((p==k)||(*(p-1)==' '))&&((*(p+length)==' ')||(*(p+length)=='\0')))   \\判断是是不是单独的单词
        {
            if(flag==-1)
            {
                flag=p-k;
            }
            count++;
            find(p+1);
        }
        else find(p+1);
    }
}

int main()
{

    gets(s);
    gets(k);
    int i,j;
    int a=strlen(s);
    int b=strlen(k);
    for(i=0;i

你可能感兴趣的:(2018-12-02洛谷P1308统计单词数)