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

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值