C 函数未提供正确的输出

C 函数未提供正确的输出,c,function,C,Function,我的任务是编写一个程序,将输入作为字符流读取,直到遇到使用重定向的EOF。让程序报告单词数和每个单词的平均字母数 int main(void) { int ch, wordCount, wordAverage, letterCount; bool inword = false; wordCount = 0; letterCount = 0; while ((ch = getchar()) != EOF) { if (isalpha(ch)) { letter

我的任务是编写一个程序,将输入作为字符流读取,直到遇到使用重定向的EOF。让程序报告单词数和每个单词的平均字母数

int main(void)
{
int  ch, wordCount, wordAverage, letterCount;
bool inword = false;
wordCount = 0;
letterCount = 0;

while ((ch = getchar()) != EOF)
{
    if (isalpha(ch)) 
    {
        letterCount++;

        if (!isspace(ch) && (!inword))
        {
            inword = true;
            wordCount++;
        }
    }

    else
        inword = false;

}
wordAverage = letterCount / wordCount;

printf("The number of words was %d, and the average letters per word was 
%d.", wordCount, wordAverage);

}

代码输出了错误的字数,我假设平均字长是正确的。它将“不要”注册为2个字而不是1个字。

它打印的是什么?你希望它打印什么?您的输入是什么?您的
isspace
检查在
isalpha
检查中。我认为您应该使用调试器。字数是161,但它应该输出155。我会记住输入的当前状态:alpha或space。然后,当字数从alpha变为空格(或从alpha变为EOF)时,可以增加字数。然后,您可以容忍几个连续的非字母字符,如标点符号、空格和换行符,而不会扭曲字数。这将如何转化为我的代码?