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");
} 展开
#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");
} 展开
2个回答
展开全部
#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询