1219: 統計字符串的單詞個數
阿新 • • 發佈:2019-02-07
== 一行 pan div std 問題 字符 names 分隔
題目描述
輸入一行字符,統計並輸出其中有多少個單詞,單詞之間用空格分隔。
輸入
只有一行,保證只包含可見字符,且此行的所有字符數不超過100。
輸出
一個整數,表示輸入的一行字符中共有多少個單詞。
請註意行尾輸出換行。
樣例輸入
I am a program.
樣例輸出
4
1 #include<iostream> 2 #include<cstdio> 3 #include<string.h> 4 using namespace std; 5 int main(){ 6 char str[110]; 7 while(NULL!=fgets(str,110,stdin)){ 8 int len=strlen(str); 9 int flag=1,count=0; 10 for(int i=0;i<len-1;i++){ 11 if(str[i]!=‘ ‘&&flag==1){ 12 flag=0; 13 count++; 14 } 15 if(str[i]==‘ ‘&&flag==0){ 16 flag=1; 17 } 18 } 19 printf("%d\n",count); 20 } 21 return 0; 22 }
Mist Note:代碼沒事多看看,覺得寫的還是比較簡單的,這裏有一個之前沒有註意的問題,fgets函數的用法。
fgets只能讀取N-1個字符,包括最後的‘\n‘,讀完結束後系統將自動在最後加‘\0‘(gets讀完結束後系統自動會將‘\n‘置換成‘\0‘)。
說到這裏就有倆種情況了:
一:當你從鍵盤上輸入<=N-1個字符(包括‘\n‘)時,那麽字符串str會以‘\n\0’結尾。這就造成了strlen(str)比你想象的大 1 ,
當然你可以通過下面代碼將‘\n‘去掉。
1 if(str[strlen(str) - 1] == ‘\n‘) { // 去掉換行符 2 str[strlen(str) - 1] = ‘\0‘; 3 }
二:當你從鍵盤上輸入>N-1個字符(包括‘\n‘)時,那麽字符串str會以‘\0‘結尾。
1219: 統計字符串的單詞個數