輸入字串,統計其中包含的單詞個數,假設單詞與單詞之間用空格分隔

2021-03-17 23:51:28 字數 4169 閱讀 3475

1樓:

#include

void main()

printf("你輸入的字元是:");

puts(str);

printf("num=%d \n",num+1);}

編寫程式,輸入字串(包含空格),統計其中單詞的個數,單詞之間以乙個或多個空格分隔。 20

2樓:用著追她

1、首先,定義乙個整型變數,儲存找到的字串位置。

2、定義兩個字串變數,儲存要查詢的字串,以及是否包含的單詞。

3、輸入查詢的字串,儲存在變數str中。

4、輸入要查詢的單詞,儲存在word中。

5、查詢單詞在字串中的起始位置,儲存在變數p中。

6、如果p的值為-1,則輸出字串中沒有要找的單詞。

7、然後,將查詢到的單詞替換為英文name。

8、最後,輸出替換後的字串。

3樓:魘魅

#include

void main()

printf("你輸入的字元是:");

puts(str);

printf("num=%d \n",num+1);}

c語言輸入一行字元 統計其中有多少個單詞,單詞之間用空格分隔開

4樓:凌亂心扉

#include<stdio.h>

int main()

{intword,num=0;

char ch;

while((ch=getchar())!='\n'){if(ch=='')

word=0;

else

{if(word==0)

{num++;

word=1;}}

}printf("%d",num);

return0;}分析

若當前字元=空格

yesﻩ未出現新單詞,使word=0,num不累加noﻩ前一字元為空格(word=0),新單詞出現,使num加1,word=1

前一字元為非空格(word=1),未出現新單詞,num不加1*/其它方法:

#include<stdio.h>

int main()

{char string[81];

int i,num=0,word=0;

char c;

gets(string);

for(i=0;((c=string[i])!='\0');i++)if(c=='')word=0;

elseif(word==0)

{word=1;

num++;

}printf("thereare%dwordsinthisline.\n",num);

return0;}

5樓:箕精義友槐

#include

"stdio.h"

main()

printf("there

are%d

words

inthe

line.

\n",

num);

}不知道我有沒有說清楚,我自己看

程式的時候就是這樣自己按程式走幾次,一般都能懂,希望對你有幫助···

6樓:文化廚子

#include

int main()

printf("there are %d words in the line.\n",num);

return 0;}

7樓:驀然回首時

你弄的太亂,我整理了一下:

#include

main()

printf("there are %d words in the line. \n" ,num);

}你說的這句

if(c==' ') word=0;

else if(word==0)

當c=空格時,令word=0;不執行else if語句

直到c!=空格時(注意連續多個空格的處理),不執行if語句,執行else if語句

由於前面令word=0,所以到空格後第一非空格字元時,word是=0的,else if判斷成功,

執行word=1; num++;,第二個非空格字元時,word就=1了,就不執行word=1; num++;了

這樣乙個單詞num就加一次

由於初始時令word=0,故第一單詞的第乙個字母時,num就等於1了

好了,就說這麼多,不懂再問我

8樓:

這為朋友,很少在電腦上調程式吧,這段程式中有一些值得注意的錯誤。首先,標準輸入輸出標頭檔案是#include,第

二、陣列string後是中括號,應該是string[81],第三,string和string是不同的,c語言區分大小寫,最後乙個問題,程式設計時所有符號一律用英文輸入,這個雖然是小問題,但一開始就應養成良好的習慣。

下面是我改好的程式:

#include

main()

printf("there are %d words in the line.\n",num);

}好了,言歸正傳。這段程式有個值得注意的問題,for迴圈沒有大括號,意味著它包含乙個if-else語句,if語句中是c=' '表示乙個單詞的結束,然後用word標記,word=0時表示有乙個完整的單詞。當讀入到下乙個字母時,表示又有乙個新的單詞,所以if(word==0)時,num++,同時將word取消標記準備下一次標記。

比如說:

輸入i am a boy.

i讀入:因為word==0 所以num=1,word=1

讀入乙個空格:word=0 說明第乙個單詞讀入完畢

a讀入:因為word==0 所以num=2,word=1 說明有第二個單詞

m讀入:word=1 說明第二個單詞未讀完

讀入乙個空格 word=0 說明第二個單詞讀入完畢

a讀入 因為word=0 說明有第三個單詞 所以 num=3,word=1

以此類推,得到結果為4

9樓:匿名使用者

首先要知道c中選擇控制語句if--else語句的配對,c語言規定else與其前面最近的乙個沒有配對的if成對。這題中很顯然第乙個if與下面的else配對。第乙個if語句意思是說:

如果c中的值是『空格』則將0值給word,下面緊跟著乙個else,如果c中的值不是空格,就執行第二個if。第二個if意思是說如果word中的值是哦,就把1給word,然後對num加一。

理解上面的關係你就很容易理解這裡面變數word的含義了。其實word這個變數僅僅是乙個單詞輸入完的乙個標誌。當輸入乙個單詞,輸入空格時,程式中word等於0,接著執行else,直接轉入執行第二個if,此時判斷word是不是等於0,如果等於零說明c中的值是空格,及乙個單詞已經輸入完,此時就對word置一,為下次判斷做準備,然後對num加一。

如果再輸入乙個新的單詞,當沒有輸完時,及c中的值不是空格,此時第乙個if不執行,執行else,接著又執行第二個if。但此時word的值是1,因此第二個if也不執行,即num不會加一。

體會一下吧,希望對你有所幫助。

10樓:詩葉子

#include "stdio.h"

main()

else s=1;

}printf("共有單詞 : %d 個 \n",sum);}

11樓:浪漫雪兒

呵呵,好好看看書在來問吧!學習認真點,不過那位老兄你說那麼多人家看了都煩,你直接給正確答案不就行了嘛。

用c語言設計乙個程式:輸入一串字串,統計其中包括多少單詞,單詞之間用空格分開。

12樓:司馬刀劍

# include

# include

void panduan(char *p, int *n);

void main()

void panduan(char *p, int *n){*n = 1;

for (; *p!='\0'; p++)if (*p == ' ')

*n += 1;

13樓:聽不清啊

#include

int main()

printf("%d",n);

return 0;}

輸入字串直到輸入星號為止,統計其中的字母個和

什麼抄語言啊 襲我用的是c include stdio.h void main printf 數字 d,字母 d,n shuzi,zimu 我用zhipascal dao program charn var sch,bch,num set of char str string ch char zim...

統計字串中最長單詞的長度!C語言

if str i a str i z 這句有點問題,z和a之間還有一些字元,應該排除掉 這個程式的主要問題是當讀到最後乙個字元null時,for迴圈退出,這時,count的值對應最後乙個單詞,而這時這個單詞的長度沒有進入for中的else進行比較,從而max的值會不對.所以你再在for後面加幾句 比...

輸入一串字串,直到輸入星號為止,統計輸出期中

include stdio.h int main return 0 大體上就這樣因為我學c 的。輸入一串字元,直到輸入乙個星號 為止,統計 輸出 其中的字母個數和數字字元個數。樓上的沒有判斷輸入的字串中有否含有其他的字元,如果有的話你的程式就出錯了。如下 scanner in new scanner...