1樓:自我程式設計
isspace() 函式用來檢測乙個字元是否是空白符。標頭檔案:。
在預設情況下,空白符包括:空格、水平製表符 、換行符、垂直製表符 、換頁、 回車。
一、你第乙個寫法有錯誤(int a;這裡定義時沒有給初值,a是隨機值,不能直接拿來迴圈累加),且這樣寫a累加的是空白符數不是單詞數。
二、加布林變數目的是單詞計數:
inword初始false。遇到單詞首字母,置true。遇到單詞後的第乙個空白符則置false
if (!isspace(ch) &inword)表示遇到乙個單詞的首字母(當前字元非空白且前乙個字元是空白時,單詞數量words累加1)。
if (isspace(ch) &inword)表示遇到乙個單詞後的第乙個空白(當前字元是空白且前乙個字元是非空白時)
連續多個空白,多餘空白符會被忽略。
ps:單純isspace來判斷,計算單詞數量還是有缺陷的。比如單詞之間有標點符號或非字母字元,也需要單獨判斷。
2樓:格里程式設計辦公技巧
第一種方法沒有考慮單詞間有多個空格的情況,第二種情況考慮了。多出來的bool變數就是為了判斷是不是多個空格連在一起。
3樓:i地小激動很喜
:c語言檢測單詞數:第一種方法沒有考慮單詞間有多個空格的情況,第二種情況考慮了。多出來的bool變數就是為了判斷是不是多個空格。
c語言統計單詞個數問題!
4樓:武荊軻
#include ""
main()
printf("本行中共有%d個單詞。",num);
其原理很簡單:
對每個字元進行判斷,如果是空格就把變數word標記為0,如果不是空格就判斷word是不是0(即判斷之前有沒有空格),如果存在空格單詞量加1,然後復位word變數為0。就這樣重複,知道句子結束。
5樓:匿名使用者
根據英語的書寫習慣,在每個單詞前後都會有空格分隔。 所以可以依據空格來劃分單詞。
不過,由於空格可能存在連續多個,所以僅統計空格數是不可以的,需要更複雜一些的演算法。
一、演算法設計:
核心思想是通過乙個flag,來確定單詞的起始, 每出現乙個單詞的起始,則表示存在乙個單詞。 這樣統計出現的單詞起始個數,即可獲得單詞總數。
1、flag初始為1;
2、遍歷字串。
3、對於每個字元,如果出現非空格字元,且flag為1,則為單詞起始,累加計數器。同時賦值flag為0。
4、在flag為0情況下,如果出現空格,表示上乙個單詞已經結束,設定flag為1。
5、 遍歷結束後輸出結果。
#include
int func(char *s)//計算單詞數函式。
else if(s[i] =上乙個單詞結束。
flag = 1;
return n;//返回結果。
int main()
6樓:痞孓寶
請問,這樣可不可以實現功能。
#include ""
main()
c語言中統計單詞個數的問題
7樓:貿夏真唐諾
相當於空格,可以看一下這個程式(用於統計單詞個數)#include
voidmain()
charstring[100];
inti,num=0,word=0;
charc;
printf("請輸入乙個英文句子:")
gets(string);
for(i=0;(c=string[i])!0';i++)if(c=='
word=0;
elseif(word==0)
word=1;
num++;
printf("
該英文句子由%d個單詞組成。,num);
有時為了給變數附乙個無意義的初值通常用這個。呵呵。
c語言陣列判斷單詞個數問題
8樓:黃山
**換了個判斷地方的位置,邏輯結構發生了變化,舉例來說,a[30] =daa bca aaaaa";
方法一要讀取到b時才計數第乙個num
方法二在讀取d時就開始計數了,計算單詞格式,還是選擇方法二好些,另外,前幾樓的能不能敬業點,人家問問題不是問錯誤,你們把**copy 執行,直接出結果,別人都不會嗎?只是一些小失誤而已,問題一點沒解決還評頭品足的。
9樓:忘川漱石
我試驗過了,結果一樣。
但是你的第二段**num++後面少了個;號。
10樓:cl荼靡
num++後面少個分號,規範錯誤。
關於c語言統計輸入單詞數量的問題!!!
11樓:匿名使用者
只有if單獨使用沒有else單獨使用,單獨使用else會出現編譯錯誤,會出現提示沒有匹配的if。所以if不能去掉。
12樓:宇哥想飛
這句話有問題應該是 else if(state ==out)
不能去掉if因為else後面是不跟表示式的,
怎麼判斷字串中單詞個數(用c語言)
13樓:育知同創教育
#include
void main()
printf("there are %d words in the line.",num);
定義乙個陣列來儲存字串,然後就從陣列的下標為0開始判斷到n,判斷有多少個字母。
14樓:匿名使用者
如果各單詞間沒有空格或其他標誌符,是很難判斷的。可能你要在你的程式裡放一部英文本典,然後再查表決定有多少個單詞了。
有空格和符號就好辦了。對每個字母迴圈判斷,只要不是字母就給計數器加1,最後的計數就是單詞個數。
判斷是不是字母可以用比較字母整形值的辦法,我記得好象大寫的字母在23到48之間,小寫的在51到76之間。可能不對,你查一下就知道了。
只要不在這兩個數字範圍內就不是字母。
另外對於特殊符號比如單引號,你可以查出它的數值,在判斷的時候如果是單引號就跳過不計數。
c語言問題 統計單詞個數
15樓:沒錢用了就出家
#include
int main()
if(ch1!=32)
num++;
printf("%d",num);
return 0;
已經測試 你可以直接拿去用。
16樓:匿名使用者
首先申明,我現在沒有編譯器,我先寫個,如果有問題,我明天再除錯一下。
#include
#define no 0
#define yes 1
void main()
printf("%d",n);
17樓:網友
int fun(char a,int n)elseif(a[i+1]!=空格')j++;
return j;
邏輯上是這樣,具體細節因為c語言很長時間沒有用了,樓主自己補充下吧,錯了大家別笑話。
18樓:匿名使用者
找到第乙個不是空格的字元作為第乙個單詞開始,找到下乙個空格該單詞結束。
返回第一句開頭。
c語言統計單詞問題
19樓:匿名使用者
首先,eof需要ctrl+z然後回車觸發而不只是回車。
其次,單詞個數達到2^32個基本只有一種可能就是讀取檔案。
最後,沒金幣只能幫你到這裡了,(;
20樓:章氏不錯
輸出【單詞的個數】。然而並沒有看出你統計了某個單詞的個數的意思。單詞個數統計需要建立詞典。
c語言統計不同單詞個數,C語言統計不同單詞個數
include include int main puts s printf d num return 0 66666順心 include include int is same char str,char s char p char str2 100 int flag 0 strcpy str2,...
c語言問題,C語言問題。
考驕 用指標將兩個字串連結接起來,前一個while迴圈,確定s1字串走完,第二個while開始將s1的逐個字元複製給s1走完,也就是末尾,這樣就可以把字串都匯入到s1中 最後一個空寫的應該寫return s1 長魚修韋 很久沒碰這東西了。我來解釋下 第一個while的迴圈是為了讓指標指向第一個字串的...
C語言問題,c語言問題?
自我程式設計 列印輸出乙個ok。因為前面迴圈for語句有分號結束。所以後面的printf語句不在迴圈內,不受迴圈語句影響。 理佑平鄲胭 結果是22 7 7 8 22 你可以將 i i i i是先 1再計算,還有這裡的運算順序是從左到右,所以應該是7 7 i 14 8 22 前兩個相加時,i先加1,加...