C语言用函数求字符串中最长单词.
#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:函数里面用判断单词长度输出的时候,假如最后一个单词长度是最长的,会把最后一个单词漏掉
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();
}
char a[100]={0};
char b[100][100]={0};
再试试看,有什么问题说出来什么现象,是运行错误吗?
大体看了一下,编译应该没什么问题。