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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM