C语言用函数求字符串中最长单词.

#include "stdio.h"
#include "string.h"
void zc(char a[100])
{int i,j=0,k=0,c,max=0,m,n=0;
char b[100][100];
c=strlen(a);
for(i=0;i<c;i++)
if(a[i]!=' ')
{b[j][k]=a[i];
k++;}
else {b[j][k]='\0';j++;
k=0;}

for(i=0;i<j;i++)
if(max<strlen(b[i]))
{max=strlen(b[i]);
m=i;}
for(n=0;n<j;n++)
if(strlen(b[n])==strlen(b[m]))
printf("%s",b[n]);}

void main()
{ char a[100];
printf("请任意输入一行字符串:");
gets(a);
printf("最长的单词为:");
zc(a);

}
为毛有错误.

#include<stdio.h>

#include<string.h>

int main()

{

char str[100];

gets(str);

void findLongest(char str[]);

findLongest(str);

return 0;

}

void findLongest(char str[])

{

int currLen=0,maxLen=0,currStart=0,MaxStart=0;

int i=0,j=0;

for(i=0;str[i];i++)

{

if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))

{

if(currLen==0)//当前长度等于0时,说明一个单词刚刚查找完,此时的位置为

currStart=i;//新单词的开始位置

currLen++;

}

if(currLen>maxLen)//当前单词的长度大于最大值,进行赋值

{

maxLen = currLen;

MaxStart = currStart;

}

if(str[i]==' ')//遇到空格,即一个单词已经结束。

{

currLen = 0;

}

}

for(j=MaxStart;j<MaxStart+maxLen;j++)

printf("%c",str[j]);

}

运行效果:

扩展资料:

Return用法

1.含义:return表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,返回值可以是一个常量,变量,或是表达式

2.作用:结束正在运行的函数,并返回函数值。

3.返回值:

计算结果表示函数执行的顺利与否(-1、0)返回值可以为各种数据类型,如:int,float,ouble,char,a[](数组),*a(指针),

结构或类(c++)返回类型规定了return后面所加的量的类型,如果返回类型声明为void,则不需要返回值。public static void Main()//程序入口只可以声明为void和int的返回

{

//不需要返回值就OK

}

public static void mm()

{

return;//有些时候,在void的方法中,你需要跳出它,可以直接用return而不能加任何量在后面

}

public static int cc()

{

return 321;//因为返回类型声明为int,所以返回一个整数

}

public static string msmsm()

{

return“asdfhasjghdg”;//因为返回类型声明为string,所以返回一个字符串

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-15

实现本功能,需要按以下步骤进行程序设计:

1、确定单词分隔符,一般情况为空格和标点符号,根据题目情况来确定标点符号是否算在单词中。 假定单词不包括标点符号,即全由字母组成

2、根据上面的特点,读取一个单词

3、计算单词长度

4、与当前最大单词长度max(初值为0)比较,如果大于max,则记录下当前单词,并将其长度赋值给max

5、重复2-4,直到读单词结束(到字符串尾)。

6、输出最长单词长度和单词

以下为程序代码和运行效果:

第2个回答  推荐于2016-10-04
你这个程序有2个问题:
1:函数里面用判断单词长度输出的时候,假如最后一个单词长度是最长的,会把最后一个单词漏掉
2:输出的时候printf("%s",b[n]);} %s后面加上空格,不然输出的单词都连在一起。我修改了下程序,如下,运行没有问题。
#include "stdio.h"
#include "string.h"
void zc(char a[100])
{
int i,j=0,k=0,c,max=0,m,n=0;
char b[100][100];
c=strlen(a);
for(i=0;i<c;i++)
if(a[i]!=' ')
{b[j][k]=a[i]; k++;}
else {b[j][k]='\0';j++; k=0;}
for(i=0;i<=j;i++) //改成小于等于,不然遗漏最后一个单词
if(max<strlen(b[i]))
{max=strlen(b[i]); m=i;}
for(n=0;n<=j;n++) //改成小于等于,不然遗漏最后一个单词
if(strlen(b[n])==strlen(b[m]))
printf("%s ",b[n]);
}
void main()
{
char a[100];
printf("请任意输入一行字符串:");
gets(a);
printf("最长的单词为:");
zc(a);
getch();
}本回答被提问者和网友采纳
第3个回答  2020-12-08
如果最长的单词有多个呢
第4个回答  2013-06-04
最好把数组进行初始化,比如
char a[100]={0};
char b[100][100]={0};
再试试看,有什么问题说出来什么现象,是运行错误吗?
大体看了一下,编译应该没什么问题。
相似回答