关于#c语言#的问题:分别统计每行单词的长度和,并输出每行最长单词的内容(如果有多个等长单词则输出最先出现的那个单词)

输入一段文本,有若干行,每行里面有若干个单词,每行开头不是空格。分别统计每行单词的长度和,并输出每行最长单词的内容(如果有多个等长单词则输出最先出现的那个单词)。
最后1行仅有单词stop ,作为结束标记。
例如
输入:
My name is Amy
My name is Jane
stop
输出:
11 name
12 name

实现代码:


#include<stdio.h>
#include<string.h>
int main()
{

    char s[200];
    while (gets(s) && strcmp(s, "stop")!=0)
    {
        char a[100][20] = { '\0' };
        int j = 0, k = 0, count = 0, max = 0, max_num, len, all = 0;
        len = strlen(s);  //计算字符串长度
        for (int i = 0; i < len; i++)
        {
            if (s[i] != ' ')
            {
                a[j][k++] = s[i];
                count++;  //单词的字母数
            }
            else
            {
                j++;
                k = 0;
                if (max < count)
                {
                    max = count;  //记录最长单词数
                    max_num = j - 1; //最长单词所在行
                }
                all += count;
                count = 0;
            }
        }
        if (max < count)
        {
            max = count;  //记录最长单词数
            max_num = j; //最长单词所在行
        }
        all += count;
        count = 0;
        printf("%d\t", all);
        for (int i = 0; i < max; i++)
            printf("%c", a[max_num][i]);
        printf("\n");
    }
    
}

输入及输出:

img