1. 程式人生 > >C語言實驗——單詞統計(字元陣列的應用)

C語言實驗——單詞統計(字元陣列的應用)

 C語言實驗——單詞統計

 

Problem Description

從鍵盤輸入一行字元(長度小於100),統計其中單詞的個數,各單詞以空格分隔,且空格數可以是多個。

Input

輸入只有一行句子。僅有空格和英文字母構成。

Output

單詞的個數。

Sample Input

stable marriage  problem Consists     of Matching members

Sample Output

7
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int i, len, num, t;
    char a[101];
    memset(a, 0, sizeof(a));
    gets(a);
    len = strlen(a);
    num = 0;
    t = 0;
    for(i = 1; i < len; i++)
    {
        if(a[i] == ' ')  t = 0;
        //當字元為空格時,令t=0
        else  if(t == 0 && a[i] != ' ')
        {//當t=0即當前字元之前存在空格,且當前字元不為空格時執行此if
            t = 1;//令t=1,防止下次進入此if重複計數
            num++;
        }
    }
    printf("%d\n", num);
    return 0;
}

此題我一開始寫的程式碼入下方是所示:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int i, len, num;
    char a[101];
    memset(a, 0, sizeof(a));
    gets(a);
    len = strlen(a);
    num = 0;
    if(a[0] == '\0')
        num = 0;
//如果沒輸入單詞,則num = 0,否則進入迴圈計算單詞量
    else
    {
        num = 1;//如果a[0]不為'\0',則有單詞輸入且它為第一個
        for(i = 1; i < len; i++)
        {
            if(a[i - 1] == ' ' && a[i] != ' ')
            {
                num++;
            }//如果a[i - 1]為空格,且a[i]不為空格,則出現新單詞
        }
    }
    printf("%d\n", num);
    return 0;
}

這樣寫的錯誤的,加入一開始是這樣輸入:

    stable marriage problem Consists of Matching members

最前面是存在空格的話就會出現問題,所以必須改為上方有標記變數的寫法,並且上方那種有標記變數的寫法在很多程式中都有所應用