回覆列表
  • 1 # 一粒塵土一個世界

    可以先設定分割的字元,比如空格,逗號,分號等等,然後對整個句子逐個字元讀取,待讀到有分隔符的時候,將兩個分隔符之間的所有字元按照順序拼起來作為一個單詞,檢查單詞是否是"Stop",如果不是,計數器增加1,否者不增加。可以按照這個思路試試。

  • 2 # 呵呵喔

    分享一個很簡單且有效的思路。一個句子實際上就是一個字串,句子中的單詞之間是有著明顯的分隔的,可能是空格、tab鍵等,先使用c++的分割字串函式把所有的單詞獨立儲存,並且儲存到一個容器中(比如vector),然後透過遍歷容器的方式統計單詞數量,沒有遇到Stop就計數器加1,否則停止統計,計數器值就是所需的單詞數量。

  • 3 # 重慶葉宏

    以句子為單位讀入較麻煩,以位元組為單位一個一個字元讀入簡單。用狀態法分析讀入的字元,易清晰。

    讀到字母,累加到單詞字串。讀到非字母,表示單詞結束,輸出單詞,單詞字串清空。非字母字元丟棄。

  • 4 # 草叢大哥

    如果我沒有理解錯,應該是讀取英文句子,正規的英文句子中,單詞之間是有空格隔開的,所以個人理解的思路應該是這樣的:

    1、定義兩個主要變數:存放句子的字串變數Str、存放單詞的陣列變數Arr

    2、將句子全部讀入字串變數Str中

    3、按順序讀取字串變數Str中的每一個字元,當讀取到的字元是空格時,兩個空格之間的字元連在一起就是一個單詞

    4、如果這個單詞等於Stop,則終止讀取過程;

    5、如果這個單詞不是Stop,由於題目是統計單詞個數,因此多個相同的單詞應該算1個單詞,因此要判斷讀到的單詞是否在存放單詞的陣列變數Arr中,如果存在,則不存入Arr,如果不存在,則存入Arr;

    6、最後得到的陣列變數Arr裡面的元素個數,就是這個句子的單詞個數。

  • 5 # 會技術的葛大爺

    要使用C語言來計算單詞數量其實方法也非常簡單,我就簡單的說一下原理吧。

    以下面這個句子為例:

    "We won"t, Mother," said Gruffo and Muffo. "We"ll take good care of Dido."

    我們能夠發現,一個英語的句子除了標點符號外,每個單詞之間都是有空格的,除了"這個標點符號。而針對"這個符號,我們會出現兩種情況,一種是won"t 和we"ll認為是一個單詞;另一種是won"t 認為是will not,we"ll認為是we will,也就是兩個單詞。

    這裡,我們先預設使用第一種,也就是won"t是一個單詞。這樣的話,先去掉除了"以外的所有標點符號,包括 , . ! ? " : ( ) 等等。

    C語言我也不是很熟,去掉字串中指定字元的程式碼我就隨便貼了一個:

    #include <stdio.h>

    #include <string.h>

    void deletechar(char a[],char c){ int i,j; for(i=0,j=0; *(a+i)!="\0"; i++) { if(*(a+i)==c) continue; else { *(a+j)=*(a+i); j++; } } *(a+j)="\0";}int main(){ char a[100],c; scanf("%s %c",a,&c); deletechar(a,c); printf("%s",a); return 0;}

    OK,去掉這些標點以後,上面的那個句子就會變成這樣。

    We won"t Mother said Gruffo and Muffo We"ll take good care of Dido

    這個時候,我們就透過空格,把字串變成一個個單片語成的陣列。這時候就簡單了,遍歷這個陣列,如果單詞不是Stop,那麼單詞的數量就+1,如果是Stop,那麼就停止並且返回當前以及累加的單詞數。

    使用特定字元分割字串的程式碼我就不去貼了,也不難,隨便百度一下就能找到。

    那麼假設我們需要考慮 " 符號,也就是說,won"t是兩個單詞,我們怎麼辦呢?

    其實也簡單,就是我們在遍歷單詞的時候去判斷一下這個單詞裡面是不是有 " 符號,如果有,就+2,如果沒有就+1。

  • 中秋節和大豐收的關聯?
  • 我住一樓,自己打個井取水怎麼樣?行嗎?