c语言 写一个函数,找出一个英文句子中最长的单词

输出结果老是不对。。。感觉应该是求最长单词的长度时出了问题。。。但是不知道怎么改。。#include<stdio.h>#defineN100intzuichang1(ch... 输出结果老是不对。。。感觉应该是求最长单词的长度时出了问题。。。但是不知道怎么改。。
#include<stdio.h>
#define N 100
int zuichang1(char str[])
{
int a[N]={0};
int ii,k=0,word=0,length=0;
int max=-1;
for(ii=0;ii<N;ii++) //确定每个单词的长度,存在数组a【】中
{
if(str[ii]==' ')
{
word=0;
}
else
{
word=1;
}
if(word==1)
{
k=k+1;
}
else if(word==0)
{
a[ii]=k;
k=0;
}
}
for(ii=0;ii<=N;ii++) //找到最长的单词的长度
{
if(a[ii]>max)
{
max=a[ii];
}
}
for(ii=0;a[ii]!=max;ii++) //找到最长单词首字母在数组中的位置
{
length=a[ii]+1;
}
return(length);
}
int zuichang2(char str[])
{
int a[N]={0};
int ii,k=0,word=0,length=0;
int max=-1;
for(ii=0;ii<=N;ii++) //确定每个单词的长度,存在数组a【】中
{
if(str[ii]==' ')
{
word=0;
}
else
{
word=1;
}
if(word==1)
{
k++;
}
else if(word==0)
{
a[ii]=k;
k=0;
}
}
for(ii=0;ii<N;ii++) //找到最长的单词的长度
{
if(a[ii]>max)
{
max=a[ii];
}
}
return(max);
}
void main()
{
int zuichang2(char str[]);
int zuichang1(char str[]);
char a[N]={' '};
int length,i,max;
printf("请输入字符串\n");
gets(a);
length=zuichang1(a);
max=zuichang2(a);
printf("最长单词长为%d\n",max);
printf("最长单词为");
for(i=length-1;;i++)
{
if(a[i]==' ')
{
break;
}
else
{
printf("%c",a[i]);
}
}
printf("\n");

}
展开
 我来答
xoaxa
2014-12-06 · TA获得超过8608个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3436万
展开全部
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define N 100

char *maxlenword(char statement[],char maxword[]) {
int i = 0,j;
char word[N];
maxword[0] = '\0';
for(i = 0; statement[i]; i++) {
if(!isalpha(statement[i++])) continue;
--i;
j = 0;
while(statement[i] && isalpha(statement[i]))
word[j++] = statement[i++];
word[j] = '\0';
if(strlen(maxword) < strlen(word))
strcpy(maxword,word);
}
return maxword;
}

int main() {
char a[N] = {'\0'};
char b[N] = {'\0'};
printf("请输入字符串:\n");
gets(a);
maxlenword(a,b);
printf("最长单词长为:%d\n",strlen(b));
printf("最长单词为:\"%s\"\n",b);
return 0;
}
bhtzu
2014-12-06 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4137万
展开全部
求出的长度max没问题,问题在那个length的计算不对,lenth得到的是第几个单词,而不是在字符串中的位置。
另外,你这个算法,复杂度太高了,对字符串一个循环就可以全部解决,你这个,做了两次循环不说,还弄了个a数组。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式