C语言:找出一句话里面的最长的单词

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
*/

希望多多支持呦!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39004632/article/details/84349822