天天看點

C語言:統計輸入的一行英文句子中的字母及單詞個數,帶注解!

//通過鍵盤輸入一行英文句子,統計其中的英文字母和單詞的數量,單詞之間用空格分開(标點符号不算單詞);

#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 ? (注意單詞的前後有空格)

C語言:統計輸入的一行英文句子中的字母及單詞個數,帶注解!

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