C程序設計語言練習題1-11

練習1-11  你準備如何測試單詞計數程序?若是程序中存在某種錯誤,那麼什麼樣的輸入最可能發現這類錯誤呢?函數

代碼以下:測試

#include <stdio.h>    //    包含標準庫的信息。

#define IN 1    /*    在單詞內    */
#define OUT 0    /*    在單詞外    */

int main( void )    //    定義名爲main的函數,它不接受參數值。
{
    printf("======計數器程序======\n");

    int c, nl, nw, nc, state;

    state = OUT;
    nl = nw = nc = 0;

    while ((c = getchar()) != EOF)
    {
        //    字符計數器遞增。
        ++nc;
        if (c == '\n') ++nl;    //    換行計數器遞增。

        //    若是遇到空格、換行符、製表符時,記錄下狀態。
        //    若下一個字符不是這三個符號,則單詞計數器遞增。
        if (c == ' ' || c == '\n' || c == '\t') state = OUT;
        else if (state == OUT)
        {
            state = IN;
            ++nw;
        }
    }

    printf("共%d行,共%d個單詞,共%d個字符。\n", nl, nw, nc);

    getch();    //    防止控制檯一閃而過,須要接受任意字符後在關閉控制檯。
    return 0;    //    向執行環境返回一個整形,0表明執行成功。
}

我的理解:spa

該程序中,字符計數器會把換行符'\n'也算做一個字符,而且直接輸入字符加EOF時,程序將不會終止。如圖所示:code

鍵入回車鍵後並不會終止程序。blog

相關文章
相關標籤/搜索