急!!!c语言,麻烦帮忙找错。题目是:输入一个文本行,其中包含多个单词,计算其中最长的单词长度

#include<stdio.h>
#include<string.h>
main()
{
char str[1000];
int i,l=0,L=0,x=0;

printf("输入一行英文:"); gets(str);
for(i=0;i<strlen(str);i++){
if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z'){
l++;
continue;
}
else{
if(l>L){
L=l;
l=0;
}
}
}
printf("最长的长度为%d\n",L);
}

注意,无论新的单词是否大于原本最长的单词,l都是要重置的,你应该放到if(l>L)外
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-31
#include<stdio.h>
#include<string.h>
main()
{
char str[1000];
int i,l=0,L=0,x=0;

printf("输入一行英文:"); gets(str);
for(i=0;i<strlen(str);i++){
if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z'){
l++;
continue;
}
else{
if(l>L){
L=l;
}
l=0; //l = 0应该放在外边,遇到空格单词长度就归零。
}
}
printf("最长的长度为%d\n",L);
}本回答被提问者和网友采纳
第2个回答  2012-10-31
#include<stdio.h>
#include<string.h>
main()
{
char str[1000];
int i,l=0,L=0,x=0;

printf("输入一行英文:"); gets(str);
for(i=0;i<strlen(str);i++){
if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z'){
l++;
continue;
}
else{
if(l>L){
L=l;
}
l=0;
}
}
if(l>L)
L=l;
printf("最长的长度为%d\n",L);
}

如果只有一个单词就杯具了
第3个回答  2012-10-31
for(i=0;i<strlen(str);i++){------>for(i=0;i<=strlen(str);i++){
改成这样就ok了
亲 记得采纳啊
相似回答