C语言题目:要求找出一段话中最长的单词
我是这么写的,本人新手想得可能比较复杂,但是不明白为什么最后输出都是空的,能出来“最长的单词为:”但是之后的printf就好像完全没用了,求大神解答错在哪里#includ...
我是这么写的,本人新手想得可能比较复杂,但是不明白为什么最后输出都是空的,能出来“最长的单词为:”但是之后的printf就好像完全没用了,求大神解答错在哪里
#include<stdio.h>
int startm,endm;
int main()
{
void maxlenword(char s[]);
void printword(char s[]);
char a[81];
printf("请输入一段英语(不超过80字符):\n");
gets(a);
maxlenword(a);
printword(a);
return 0;
}
//////////////////////////
void maxlenword(char s[])
{
int i=0,start=0,end=0,maxlen,j=0,len,k;
while(s[i]<81)
{
if(s[i]=='\t')
{
end=i;
break;
}
i++;
}
maxlen=end;
while(i<81)
{
if(s[i]=='\t')
{
if(j==0)
{
start=i;
j=1;
}
else
{
k=i;
for(i=start;i<k;i++)
{
if(s[i]<'a'&&s[i]>'z'&&s[i]<'A'&&s[i]>'Z')
j=0;
start=k;
}
}
if(j==1)
{
end=i;
len=end-start;
if(maxlen<len)
{
maxlen=len;
startm=start;
endm=end;
}
start=end;
}
}
i++;
}
}
/////////////////////////////
void printword(char s[])
{
int i;
printf("最长的单词为:\n");
for(i=startm;i<endm;i++)
printf("%c",s[i]);
} 展开
#include<stdio.h>
int startm,endm;
int main()
{
void maxlenword(char s[]);
void printword(char s[]);
char a[81];
printf("请输入一段英语(不超过80字符):\n");
gets(a);
maxlenword(a);
printword(a);
return 0;
}
//////////////////////////
void maxlenword(char s[])
{
int i=0,start=0,end=0,maxlen,j=0,len,k;
while(s[i]<81)
{
if(s[i]=='\t')
{
end=i;
break;
}
i++;
}
maxlen=end;
while(i<81)
{
if(s[i]=='\t')
{
if(j==0)
{
start=i;
j=1;
}
else
{
k=i;
for(i=start;i<k;i++)
{
if(s[i]<'a'&&s[i]>'z'&&s[i]<'A'&&s[i]>'Z')
j=0;
start=k;
}
}
if(j==1)
{
end=i;
len=end-start;
if(maxlen<len)
{
maxlen=len;
startm=start;
endm=end;
}
start=end;
}
}
i++;
}
}
/////////////////////////////
void printword(char s[])
{
int i;
printf("最长的单词为:\n");
for(i=startm;i<endm;i++)
printf("%c",s[i]);
} 展开
1个回答
展开全部
查下string.h函数判芦拆,其中掘枣strlen可以计算单词的长度,把单词的长度放到一个数组哗链中,比较大小即可
追问
strlen是计算字符串长度,我要的是找出最大的单词并计算长度,感觉你这样再定义一个数组好像更麻烦了
追答
#include
#include
int main()
{
int i,max=0,count=0,l;
char s[100]={0};
printf("请输入一个英文句子:\n");
gets(s);
l=strlen(s);
for(i=0;i='A')||(s[i]='a'))&&((s[i+1]='A')||(s[i+1]='a')))
{
count++;
i++;
}
if(count>max)
{
max=count;
}
i++;
}
printf("%d\n",max);
return 0;
}
这是我自己写的代码,希望对你有所帮助!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询