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