输入一段文本,有若干行,每行里面有若干个单词,每行开头不是空格。分别统计每行单词的长度和,并输出每行最长单词的内容(如果有多个等长单词则输出最先出现的那个单词)。
最后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");
}
}
输入及输出: