我有函数,它应该计算有多少个字符有最长的单词,但它错了。
例如,如果我在第一个短于第二个单词时输入两个单词:“我的名字”程序向我显示最长的单词有2个字符。但是当我输入“name my”时,它表明结果是4.为什么会这样?
void max_chars(ListNodePtr sPtr)
{
int i = 0;
int max = 0;
while (sPtr->next != NULL) {
if (isalpha(sPtr->data)) {
i++;
} else {
if (i > max) {
max = i;
}
i = 0;
}
sPtr = sPtr->next;
}
printf(" \n The Longest word have : %d chars \n", max);
}
答案 0 :(得分:2)
my name
当您到达节点e
时,break
为next
null
,因此max
不是max
更新。
您还应该在循环外更新{{1}}或更改循环的条件
答案 1 :(得分:0)
void max_chars(ListNodePtr sPtr)
{
int i = 0;
int imax = 0;
for( ;sPtr; sPtr = sPtr->next;) {
if (isalpha(sPtr->data)) { if(++i > imax) imax=i; }
else { i = 0; }
}
printf(" \n The Longest word have : %d chars \n", imax);
}