前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言实现输出用户输入的字符串中最长的单词

C语言实现输出用户输入的字符串中最长的单词

作者头像
吃猫的鱼Code
发布2023-02-02 10:48:10
1K0
发布2023-02-02 10:48:10
举报
文章被收录于专栏:吃猫的鱼个人博客编程笔记

C语言实现输出用户输入的字符串中最长的单词

题目要求

要求通过使用函数,输出用户输入的字符串中的所有最长的单词。

我的解题思路

(可能并不是最简洁的) 使用两个函数,一个函数用来计算用户输入的字符串当中最长的单词的长度。另一个函数用于遍历字符串,将符合最长长度的单词直接输出。

函数一:找出字符串中最长单词的长度

逐个字符遍历,根据判断当前遍历到的字符是否是空格,以及其前一位是否是空格,对单词的起始进行判断,然后统计最长的单词的长度。

代码语言:javascript
复制
int longestString(char str[]){                //此函数用于找出字符串中最长单词的长度
    int length = strlen(str);
    int j=0,begin=0,end,maxnum =0;            //此处的j用于表示前一位字符的状态,j为0是空格,j为1不是空格
    for(int i=0;i<=length-1;i++){
        if(str[i]==' '&&j==1){                //*当前字符是空格,前一位字符不为空格、
            end = i;
            if(maxnum<(end-begin)){            //如果当前单词大于最大值
                maxnum = end - begin;        //更新最长单词的长度
            }
            j=0;                            
        }else if(str[i]!=' '&&j==0){        //*当前是字母字符串,前面是空格
            begin = i;                        //新的单词开始,赋值begin
            j=1;                            
        }
        if(i==length-1){                    //*如果是最后一位
             if(maxnum==0){                    //如果遍历到最后一位都显示0,证明数组是一个单词
                 maxnum=length;                //直接将整个数组length赋值给maxnum
                 break;
             }
             if(str[i]!=' '){
                 if(maxnum<(length-begin)){
                maxnum = length - begin;    //此处判断,更新最长单词的长度
                }
            }    
         }
    }
    return maxnum;                            //返回最长单词的长度
}

函数二:用于查找所有长度为最大值的字符串,然后输出

该函数通过接受字符串输出以及前一个函数传入的最长单词长度,对字符串进行遍历判断。同理,通过遍历整个字符串,通过判断空格以及前一位是否为空格然后判断单词的起止时间。如果单词的长度符合最长单词长度的要求,直接遍历输出该单词。

代码语言:javascript
复制
void printLongestString(char str[],int longestLength){            //用于查找所有长度为最大值的字符串,然后输出
    int length = strlen(str),begin=0,end=0,j=0;
    if(length==longestLength){                                    //如果字符串长度就是最大值字符串,证明只有一个单词,直接输出                    
        printf("%s",str);            
    }else{
        for(int i=0;i<=length-1;i++){                            //开始遍历查找数组中符合长度的单词并且输出
            if(i==length-1){
                if(longestLength==(length-begin)){
                  for(int k=begin;k<=length-1;k++){
                      printf("%c",str[k]);
                  }
                }
            }else if(str[i]==' '&&j==1){                    
             end=i;
             if(longestLength==(end-begin)){
                 for(int p=begin;p<=end;p++){
                    printf("%c",str[p]);
                 }
              }
              j=0;
             }else if(str[i]!=' '&&j==0){                    
              begin=i;
              j=1;
            }
        }
    }
}

函数三:主函数,用于调用前两个函数实现逻辑

代码语言:javascript
复制
void main(){                                                    //主函数
    char str[100];
    gets(str);
    int longestString(char str[]);
    void printLongestString(char str[],int longestLength);
    printLongestString(str,longestString(str));                    //调用两个函数
    system("pause");
}

头部引用的头文件如下

代码语言:javascript
复制
#include
#include
#include

接下来看一下运行结果截图:

以上就是本题我自己的个人思路,当然还会有更好的方法。欢迎更多大佬指点一下。

本文共 656 个字数,平均阅读时长 ≈ 2分钟

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C语言实现输出用户输入的字符串中最长的单词
  • 题目要求
  • 我的解题思路
  • 函数一:找出字符串中最长单词的长度
  • 函数二:用于查找所有长度为最大值的字符串,然后输出
  • 函数三:主函数,用于调用前两个函数实现逻辑
  • 头部引用的头文件如下
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档