总结(写一个函数 ,输入一行字符,输出其中最长的单词及其长度)
#include <stdio.h>#include<ctype.h>
static int c=0,d=0;
void add(char b[]); //此函数用来累加单词的个数
void bbb(int,int); //此函数用得到最长单词(通过比较),以及输出所有最 长单词
char a[50];
int main()
{
gets(a);
add(a);
return 0;
}
void add(char b[])
{
int m = 0;
for(int i=0;b[i]!='\0';i++)
{if(isalpha(b[i]))
{ m++;
if(b[i+1]=='\0')
bbb(i,m);}
else
{
bbb(i,m);
m = 0;
}
}
}
void bbb (int k,int l)
{
if(d<l)
{
d=l;
c=k;
} //此段以上是用来找出输入字符中最大单词的长度d;此段以下,是用来输出单词长度满足d的所有单词
if(a[k+1]=='\0')
{int h=0,e=0;
for(;a[h]!='\0';h++)
{for(;isalpha(a[h]);h++)
{e++;}
if(e==d)
{printf("最长的单词是:");
for(int j=h-e;j<=h-1;j++)
printf("%c",a[j]);
printf(" 最长单词的长度是%d",d);
printf("\n");}e=0;
if(a[h]=='\0')
h--; }}}
这是按自己初始思维写的,比较基础,也比较繁琐,
个人觉得ouyongshit 写的
#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main()
{
char ch,oldch=' ',str[80],max[80];
int len,maxlen=0;
while(oldch!='\n'){
len=0;
for(ch=getchar();isalpha(ch);ch=getchar())
str[len]=ch,len++;
str[len]=0;
oldch=ch;
if(len>maxlen){
maxlen=len;
strcpy(max,str);
}
}
puts(max);
printf("maxlen=%d\n",maxlen);
return 0;
}
比较简短,精悍。再加上我的“此段以下的程序”那样的方法,就算做出来了,
由于本人水平有限,“此段一下的程序“ 还不够完美,”此段以上的程序“也不咋的,还请高手多多包涵,大家共同进步!