输出字符串中最长单词
关键在于找出字符串中最长单词的起始下标与单词长度
int main()
{
int is_letter(char c);
void f(char a[]);
char a[100];
gets(a);
f(a);
return 0;
}
int is_letter(char a)
{
if((a>='a'&&a<='z')||(a>='A'&&a<='Z'))
return 1;
return 0;
}
void f(char a[])
{
//cb当前单词的起始下标,cl当前单词的长度,mb最大长度单词的下标,ml最大单词的长度
int i=0, cb=0, mb=0, cl=0,ml=0;
int flag=0;//判断当前单词的起始下标的一个标志
while(a[i]!='\0')
{
if(is_letter(a[i]))
{
if(flag==0)//单词的第一个字母赋值下标i
cb=i;
cl++;//单词长度加1
flag=1;//置标志为1,不进行二次赋值
}
if(ml<cl)//更新最大单词的下标与长度
{
ml=cl;
mb=cb;
}
if(!is_letter(a[i]))//不是单词时,重置标志位与长度
{
flag=0;
cl=0;
}
i++;
//printf("max_index:%d,max_len:%d\n",mb,ml);//遍历分析
}
for(i=mb; i<mb+ml; i++)
{
printf("%c",a[i]);
}
printf("\n");
}