0

単語が最も長い文字の数をカウントする関数がありますが、カウントが間違っています。

たとえば、最初の単語が2番目の単語より短いときに2つの単語を入力すると、「my name」プログラムは、最長の単語が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到達すると、 isが更新されないため、ループが発生しeます。 ループの外側でも更新するか、ループの状態を変更する必要がありますbreaknextnullmax
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 に答える