写一个函数,找出一个英文句子中的最长单词

Posted 知交

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写一个函数,找出一个英文句子中的最长单词相关的知识,希望对你有一定的参考价值。

之前程序实验课上遇到的一道题,由于没做出来,这里有答案后在此记录一下

这里答案是非函数的方法做的,后面我自己尝试着给改成了函数

#include <stdio.h>
#include <string.h>
int main()
{
 char str[233]; //自定义一个数组 
 printf("输入所要查询的句子\n");//输入字符串 
 gets(str);
 int i,a,b,c;
 a=b=c=0;//初始化a,b,c为0,a为已经扫描过的单词的当初,b为正在扫描的单词的长度 
 for(i=0;i<strlen(str);i++)//设置循环进行扫描空格字符 
 {
   if(str[i]!= )//当数组中对应元素不是空格字符时 b的数值加1,进行计数 
   {
    b++;
    if(a<=b)//将b于a的值进行比较,b大于a,则将b的值赋给a,并通过c来计算最长单词的起始位置 
    {
      a=b;
     c= i-a+1;
    }
    continue;//当成条件后终止此次循环 
   }
   else //否则则将扫描后的b归零 
   {
    b=0;
   }
 }
 printf("最长单词是\n");//输出最长单词 
 for(i =c;i<c+a;i++)
  printf("%c",str[i]);
}

这个代码其实写出来到不算是难,但是细节的处理很重要,就比如最后那个else和b=0,我是万万没有考虑到的

后面我改成了函数

具体代码如下:

#include <stdio.h>
#include <string.h>
int findword(char a[]);//函数声明 
int main()
{
    char a[100];
    gets(a);
    int beginning;
    beginning=findword(a);
    while(a[beginning]!= ){//从最长单词的首字符开始输出,遇到空格字符时停止 
    printf("%c",a[beginning]);
    beginning++;}
    
    
}
int findword(char word[]){//这里findword单词记录的仅仅是最长单词的起始字符。 
    int n,i,a,b,c;
    a=b=c=0;
    n=strlen(word);
    for(i=0;i<n;i++){
        if(word[i]!= ){//遇到非空格字符时,b的数值加一 
            b++;//b用来储存当前单词的长度,切记清零 
        if(a<=b){//a用来储存扫描到的较长单词 
            a=b;
            c=i-a+1;//用c来记录最长单词的起始位置 
        }
        continue;//这里没有continue可能会导致else和第一个if语句同时执行,导致程序出错 
        }
        else b=0;//如果得到的a>b,将b清零,用来记录下一个单词长度,否则b的值会一直增加,导致输出结果错误
    }
    return c;
}

由于能力有限,我这个定义的函数就是仅仅把最长单词的首字符作为返回值,后面用while语句来输出。然而函数中其实已经把最长单词的长度求出来了,这点应该可以采用数组作为返回值的方法来处理,但是毕竟能力有限,姑且采用了这么一个不着调的处理方法。

 

以上是关于写一个函数,找出一个英文句子中的最长单词的主要内容,如果未能解决你的问题,请参考以下文章

Python中一个句子怎么样找出所有的长度最长的单词?

[JS]返回最长字符串的长度

使用javaScript在句子中找出最长的单词,并返回它的长度(三种方法)

在句子中找出最长的单词,并返回它的长度。

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

C语言 统计歌词中的单词个数,并找出最短和最长的单词(必须用指针)求帮忙,感谢!!!