C 函数未提供正确的输出
我的任务是编写一个程序,将输入作为字符流读取,直到遇到使用重定向的EOF。让程序报告单词数和每个单词的平均字母数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
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)时,可以增加字数。然后,您可以容忍几个连续的非字母字符,如标点符号、空格和换行符,而不会扭曲字数。这将如何转化为我的代码?