C语言统计单词个数

如题所述

第1个回答  2017-06-27

根据英语的书写习惯,在每个单词前后都会有空格分隔。 所以可以依据空格来划分单词。 

不过,由于空格可能存在连续多个,所以仅统计空格数是不可以的,需要更复杂一些的算法。 

一、算法设计:

核心思想是通过一个flag,来确定单词的起始, 每出现一个单词的起始,则表示存在一个单词。 这样统计出现的单词起始个数,即可获得单词总数。

1、flag初始为1;

2、遍历字符串。 

3、对于每个字符,如果出现非空格字符,且flag为1,则为单词起始,累加计数器。同时赋值flag为0。

4、在flag为0情况下,如果出现空格,表示上一个单词已经结束,设置flag为1。

5、 遍历结束后输出结果。

二、参考代码:

#include <stdio.h>
int main()
{
    char s[200];
    int i,n=0,flag=1;
    gets(s);//输入字符串。
    for(i = 0; s[i]; i ++)//遍历
    {
        if(flag == 1)
        {
            if(s[i] != ' ')//单词起始
            {
                n++;
                flag = 0;
            }
        }
        else if(s[i] == ' ')//上一个单词结束。
            flag = 1;
    }
    printf("%d\n", n);//输出结果。
    return 0;
}