C语言:找出一句话里面的最长的单词
我是一名在校大学生,初次写博客,希望各位大佬不喜勿喷,这个小程序,仅供参考,希望对大家有所帮助。
首先,分析题意,我们需要将一句话里面的单词数量统计出来,才能比较哪个单词最长。
所以,我们遍历字符串数组,以空格为单词的结束符标识,定义三个参数,start(单词的开始下标位置),end(单词的结束下标位置),length(单词的长度)。
在for循环执行的时候,我们先对end进行赋值,然后llength=end-start,最后对start赋值。具体代码如下所示。
在这个程序中,我们最后并没有按照传统的方法,使用 spilt() 函数将字符串数组按照单词拆分插入到一个新的数组中,而是定义一个参数 j ,存储当前length最大的时候的start值,这样我们最后就可以将最长单词储存并输出出来。
#include <stdio.h>
//------------------------定义数组长度
#define N 20
//------------------------函数声明
void Entering(char *str,int n);
void Export(char str[],int n);
void LongestWord(char str1[],char *str2,int n,int *a);
int main(){
int a=0;
char str1[N];
char str2[N];
Entering(str1,N);
LongestWord(str1,str2,N,&a);
Export(str2,a);
return 0;
}
//------------------------输入
void Entering(char *str,int n){
int i;
printf("请输入str:");
for(i=0;i<n;i++)
{
scanf("%c",&str[i]);
}
}
//------------------------输出
void Export(char str[],int n)
{
int i;
for(i=0;i<=n;i++)
{
printf("%c",str[i]);
}
printf("\n");
}
//------------------------最长单词
void LongestWord(char str1[],char *str2,int n,int *a)
{
printf("---------最长单词---------\n");
int i,j,length=0,start=0,end=0;
for(i=0,j=0;i<n;i++)
{
if(str1[i]==' ')
{
end=i;
if(length<end-start)
{
j=start;
length=end-start;
}
start=i+1;
}
}
for(i=0,j;j<end;i++,j++)
{
str2[i]=str1[j];
}
*a=length;
}
/*
(样例输入:)
请输入str:I wrote a function. It was my first function.
(样例输出:)
function
*/
希望多多支持呦!