题目描述:
输入一段字符(由空格、字母和数字几种组成,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。
输入
输入一段字符,以stop作为最后输入的字符串。
样例输入:
My name is Amy
My name is Jane
stop
样例输出:
11 name
12 name
提示:
字符串长度不超过100。
#include<stdio.h>
#include<string.h>
int main(void)
{
int i,TempCount=0,flag,count,max; //TempCount是暂时计数,用于计算每个单词的长度|count则是用来计算所有单词的总长度
char arr[100];
while(1) //检测不到"stop"就不断循环
{
gets(arr);
count=0; //重置计数
max=0; //重置最大值
if(strcmp(arr,"stop")==0) //检测到"stop"跳出循环
break;
for(i=strlen(arr)-1;i>=0;i--) //倒数,配合TempCount>=max,便于输出最靠前的最长单词
{
if(arr[i]!=' ') //非空格字符count++
{
TempCount++;
count++;
}
if(arr[i]==' '||i==0) //以空格和开头为标志进行单词分隔
{
if(TempCount>=max) //存储最长单词的长度
{
max=TempCount; //存储最长单词的长度
flag=i+1; //记录单词最长时,该最长单词首字母的标号
if(i==0) //同上,但i==0时,要特殊一些
flag=i;
}
TempCount=0; //重置暂存计数
}
}
printf("%d ",count);
for(i=flag;i<flag+max;i++) //通过标记将最长单词的首字母位置检索出来,并向后打印max个字符(最长单词的长度就是max)
{
printf("%c",arr[i]);
}
printf("\n");
}
return 0;
}