0

我有函数,它应该计算有多少个字符有最长的单词,但它算错了。

例如,如果我在第一个比第二个短时输入两个单词:“我的名字”程序显示最长的单词有 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);
}
4

2 回答 2

2

my name您到达节点时,ebreak会循环,因为nextisnull并且因此max不会更新。您也应该在循环之外
更新或更改循环的条件max

于 2013-03-17T22:10:51.893 回答
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);
}
于 2013-03-17T22:17:58.533 回答