- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- void main()
- {
- int i,len = 0,maxlen = 0;
- char s[1000],subs[100];
- char *p,*q;
- printf("请输入字符串:");
- gets(s);
- printf("%d",strlen(s));
- for(p=s;*p != '\0';p++)
- {
- if(*p != ' ')
- {
- len++;
- }
- else{
- if(len > maxlen)
- {
- maxlen = len;
- q = p-len;
- len = 0;
- }
- len = 0;//这个可以防止统计出来的单词字符数较小的情况下,len的值没被清0。
- }
- //这段加上可以防止最后一个单词是最大的时候被漏掉的情况。
- if(*(p+1) == '\0')
- {
- if(len > maxlen)
- {
- maxlen = len;
- q = p-len+1;
- len = 0;
- }
- }
- }
- for(i = 0;i < maxlen;i++)
- subs[i] = *(q+i);
- subs[maxlen] = '\0';
- printf("最长的英文单词是:%s\t,其长度是:%d\n",subs,maxlen);
- }
复制代码
测试输入输出如下:
输入:
a aa aaa aaaa
输出:
最长的英文单词是:aaaa ,其长度是:4
输入:
最长的英文单词是:complaining ,其长度是:11
看看你要的是不是这样的效果,在单词间有空格的情况也测试过了,一般没有问题,但是,还是会有小bug的。因为现在只能在单词间输入空格可以统计正确,其他情况就自己加上if判断条件吧。 |