C語言統計單詞個數,單詞個數演算法

2020-07-16 10:04:28
在實際生活中經常會遇到一個問題:寫英語作文時,常常要求滿足一定的字數。在以往,要麼我們一個一個地數;要麼我們估算一行的單詞數,然後用行數進行估算。

第一種方法太費時,若是長篇大論,那幾乎是不可能統計的;而第二種方法不太準確。這就給我們留下了一個問題:如何又快、又準確地統計一篇英文文章中的單詞數?

演算法思想

要解決這個問題,最自然的演算法是,讀取文章的所有內容,然後一個單詞一個單詞地統計,然而,我們在這裡遇到了一個難題:程式看不懂英文,如何知道什麼是一個單詞,什麼不是一個單詞呢?似乎在這裡遇到了障礙,可是,如果換個角度思考問題,也許會柳暗花明又一村:文章中的單詞都是用空格間隔開的,換句話說,單詞數=空格數+1。

程式不認識單詞,但是程式認識空格啊!這樣,整個問題實際上轉換成了統計文章中的空格數。

有了這樣的問題轉換思路,整個問題就簡單多了。可以先按照這個思路自己實現,也可以直接看下面的程式碼實現。

程式程式碼

#include <stdio.h>
int main()
{
    printf("輸入一行字元:n");
    char ch;
    int i,count=0,word=0;
    while((ch=getchar())!='n')
        if(ch==' ')
            word=0;
        else if(word==0)
        {
            word=1;
            count++;
        }
    printf("總共有 %d 個單詞n",count);
    return 0;
}

偵錯執行結果

根據程式提示,分別輸入“I love China”和“I love Xichang College”兩個字串程式碼, 程式統計單詞後輸出結果分別如下所示:

輸入一行字元:
I Love China
總共有 3 個單詞

輸入一行字元:
I Love Xichang College
總共有 4 個單詞

總結

本範例展示了如何對字元陣列進行操作,型別為字元型的陣列稱為字元陣列,C 語言中沒有專門的字串變數,但是有字元陣列串常數,所以字串常數的儲存是通過對字元陣列的操作來完成的。