//通過鍵盤輸入一行英文句子,統計其中的英文字母和單詞的數量,單詞之間用空格分開(标點符号不算單詞);
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main()
{
char string[100];//根據拟從鍵盤輸入的字串的長度需要适當調整,要避免輸入的長度超出設定的範圍。
char c;
int i, num=0,sum=0,word=0; //定義 word 用來訓示一個單詞是不是結束或新單詞是否開始;
printf("請從鍵盤輸入一行需要查詢的英文句子,進行單詞數量統計:\n\n");
gets(string); //從鍵盤獲得輸入的字元串;
//以下統計句子中的英文字元個數;
for(i=0;(c=string[i])!='\0';i++) //for循環語句,周遊句子中的每個字元;初始化i=0;若字元c!='\0',即未到達結束符'\0'的話,執行i++;
{
if(('A'<=string[i]&&string[i]<='Z')||('a'<=string[i]&&string[i]<='z'))
sum++; //以上為條件句,如果字元在A~Z,a~z 範圍之内的話,則執行sum++,累加英文字母個數;
}
//以下統計句子中的英文單詞個數;
for(i=0;(c=string[i])!='\0';i++) //for循環語句,周遊句子中的每個字元;初始化i=0;若字元c!='\0',即未到達結束符'\0'的話,執行i++;
{ //'\0'用作字元串的結束符。它的ASCII數值是0。
if(c<'A'||c>'Z'&&c<'a'||c>'z') //設定條件:如果字元 c 遇到A~Z和a~z範圍之外其它符号字元的話,包括遇到空格' ';
word=0; //上面條件為真時,執行這裡,置word=0,表示未遇到單詞,或,一個單詞已結束,同時也意味着要開始遇到下一個新單詞;
else if(word==0) //當條件(word==0)為真,執行下面花括号裡面的語句;當word==0時,表示未遇到字母,即未遇到單詞,或上一個單詞已結束;
{
word=1; //那麼置word=1,即,表示下一個新單詞開始,
num++; //執行num++,累加英文單詞的個數;
}
}
printf("\n");
printf("您輸入的這句英文句子中共包含%d個英文字元,%d個英文單詞。\n",sum,num);
}
示例:輸入語句: Hello ! My friend , how are you ? (注意單詞的前後有空格)

轉載于:https://www.cnblogs.com/xmhango/p/5501899.html