【发布时间】:2019-04-24 09:59:42
【问题描述】:
我正在编写一个程序来计算字符数组中每个单词的长度。我想知道你们是否可以帮助我,因为我现在至少挣扎了两个小时,而且我不知道如何正确地做到这一点。 它应该是这样的:
(字母数)-(具有这么多字母的单词数)
2 - 1
3 - 4
5 - 1
等等
char tab[1000];
int k = 0, x = 0;
printf("Enter text: ");
fgets(tab, 1000, stdin);
for (int i = 2; i < (int)strlen(tab); i++)
{
for (int j = 0; j < (int)strlen(tab); j++)
{
if (tab[j] == '\0' || tab[j]=='\n')
break;
if (tab[j] == ' ')
k = 0;
else k++;
if (k == i)
{
x++;
k = 0;
}
}
if (x != 0)
{
printf("%d - %d\n", i, x);
x = 0;
k = 0;
}
}
return 0;
【问题讨论】:
-
您是要计算每个单词的字母数还是所有单词的平均字母数?
-
@FiddlingBits 从所需的输出来看,它应该是 N 个字母的单词数,其中 N 从 1 递增。
-
@WhozCraig 感谢您破译它。 :-D
-
嗨,我正在尝试找出给出的文本中有多少单词有例如 2 个字母等等。我真的不知道该怎么做
-
旁注:
strlen必须在每次调用时扫描整个字符串。这是非常缓慢的。tablen的长度没有变化,所以我们可以缓存长度,只调用一次strlen。在fgets之后,执行:int tablen = strlen(tab);然后,将for循环中的(int)strlen(tab)调用更改为tablen。这将大大加快速度。