我正在尝试获得字母数/字数的答案......我在计算单词时遇到了问题。
实际上在这里我只声明一个新单词是否有换行符的空格,制表符,但仍然不起作用..
这是我的功能:
int num_of_letters_words()
{
int numberOfLetters = 0;
int numberOfWords = 0;
int userInput;
int answer;
printf("please enter your input:\n");
while ((userInput = getchar()) != EOF)
{
if (ispunct(userInput))
continue;
else if(userInput == '\n')
continue;
else if (userInput == ' ')
continue;
else if (iscntrl(userInput))
continue;
else if (userInput == ' ')
;
else
numberOfLetters++;
if (userInput == ' ' || userInput == '\n' || userInput == '\t')
numberOfWords++;
}
answer = numberOfLetters/numberOfWords;
return answer;
}
只有在功能结束时你才能看到单词counter ...这里有什么问题?
答案 0 :(得分:3)
continue
使你的循环继续下一次迭代,它会跳过它后面的内容。
假设“单词”将被定义为一个字母序列,后跟分隔符(空格,制表符等),然后您的循环可能如下所示:
while ((c = getchar()) != EOF)
{
if (c == ' ' || c == '\t' || c == '\n' || etc.)
{
if (letterCountThisWord > 0)
wordCount++;
letterCountThisWord = 0;
continue;
}
letterCount++;
letterCountThisWord++;
}
if (letterCountThisWord > 0)
wordCount++;
如果您不确定应用程序中发生了什么,那么有很多很棒的IDE提供了很好的调试工具。您可以逐步完成代码,观察变量的变化,并以这种方式真正理解您的代码。
还有一个建议:在桌子上放一些东西(瓶子,花等等)并想象它是你的教授或老板,并试着详细解释他的代码是如何工作的。你会发现自己不知道你的代码的某些部分实际上做了什么/正在发生什么,这将迫使你寻找答案(谷歌,书籍......)。
祝你好运:)