我正在尝试找到字符中的单词长度和字符串中这些单词的出现次数,输入是我从用户那里得到的。我还要找到这个词的平均长度。我必须打印这样的东西:
5 character word occurred 5 times
9 character word occurred 2 times
average length of the word is 5.6
到目前为止,我有这个,我只是无法弄清楚事件和字母。平均工作正常。
int ch;
int numWords = 0;
int numLetters = 0;
bool prevWasASpace = true; //spaces at beginning are ignored
printf("Enter a sentence: ");
while ((ch = getchar()) != EOF && ch != '\n')
{
if (ch == ' ')
prevWasASpace = true;
else
{
if (prevWasASpace)
numWords++;
prevWasASpace = false;
numLetters++;
}
}
if (numWords > 0)
{
double avg = numLetters / (float)(numWords);
printf("Average word length: %.1f (C = %d, N = %d)\n", avg, numLetters, numWords);
}
else
printf("You didn't enter any words\n");
return 0;
最后一个问题,我如何输入4000个字符的输入但一次只能输入80个?所以如果我输入一个大字符串,它一次只能为80个字符执行此操作,但会一起运行统计信息
答案 0 :(得分:0)
您需要一种方法来存储/保存每个长度的单词数。一个(有些粗略但可行)的方法是使用一组int,其中数组索引表示单词中有多少个字母(1个字母的单词计数进入索引[0],2个字母的单词计入索引[1]等)这种方法的问题是你必须选择一个最大字长,这就是你的数组的长度。但由于您计划最多只接受80个字符,这可能是您的最大字长,因此您可以声明您的数组长度为80。
要限制输入的80个字符,只需在读取时计算字符数,然后在达到80时跳出循环.HHT。
(注意:如果您的程序在上述内容之后继续执行其他操作,并且其他内容包括其他输入,则您必须处理超出80个字符的输入,而您将丢弃。 "但由于这似乎不是你的任务的一部分,你可以逃避"草率"并忽略那些输入并在完成后退出程序。)