Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C语言实现输出用户输入的字符串中最长的单词

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

作者头像
吃猫的鱼Code
发布于 2023-02-02 02:48:10
发布于 2023-02-02 02:48:10
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

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

题目要求

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

我的解题思路

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
void main(){                                                    //主函数
    char str[100];
    gets(str);
    int longestString(char str[]);
    void printLongestString(char str[],int longestLength);
    printLongestString(str,longestString(str));                    //调用两个函数
    system("pause");
}

头部引用的头文件如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include
#include
#include

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

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

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【算法与数据结构】将字符串中最长的单词输出
前端修罗场
2023/10/07
2080
算法:字符串
在示例代码中,str是一个字符串的变量名称,hello world则是该字符串的值,字符串的长度为11,该字符串的表示如下图所示:
用户3578099
2022/03/15
2.9K0
算法:字符串
LeetCode字符串高频题目整理(持续更新中)
  给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
嵌入式与Linux那些事
2021/05/20
1.3K0
字符串中最长的回文字符串长度
回文字符串是指aba类型的字符串,即字符串关于中间字符对称。判断字符串中是否含有回文、得到最长回文字符串的长度、得到不同回文字符串的个数等等,是经常考察的编程题目。
全栈程序员站长
2022/09/05
1.8K0
字符串中最长的回文字符串长度
Leetcode | 第C节:字符串综合题(2)
东京奥运会圆满收官!当然我自己也将迎来留学前的最后准备,所以更新速度可能还是会比较慢……但还好,大部分的内容都已经在之前写的差不多了,也希望最后这几篇我也能够尽快更完,当然也希望大家可以谅解~
学弱猹
2021/09/07
7300
【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法
在上一篇内容中我们介绍了Python中的数据类型。经过上一篇的介绍,我们不难发现Python与C/C++还是有所不同的,不管是变量的数据类型也好,还是数据类型的种类也好,又或者是类型之间的转化也好,都是存在着一定的差异:
蒙奇D索隆
2024/09/07
2600
【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法
词典中最长的单词
给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。
羽翰尘
2020/07/14
8550
词典中最长的单词
江哥带你玩转C语言| 12 -二维数组和字符串
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是江哥持续更新的动力。
极客江南
2021/07/11
1.5K0
字符串反转问题
首先是我之前写的程序,同时这也是处理第一类的字符串反转问题,也就是输入This is a string., 输出为.gnirts a si sihT: #include <stdio.h> #include <string.h>/*我之前的这个代码,有一个很致命的BUG,在字符串长度为奇数的时候运行时正确的 *但是在字符串长度为偶数的时候运行却是错误的, *比如“ab”,str的地址为0x89,ptr的地址为0x8A,当str++,ptr--执行以后 *str和ptr都是不会相等的,也就是不会结束wh
猿人谷
2018/01/17
9880
字符串反转问题
C++字符串自制常用工具函数(格式化组装、各类型转字符串、拆分数组、替换子串、去除字符、大小写转换)
C++对字符串组装没有一个很直接好用的函数,这里利用C的snprintf()函数,提供一个可用的函数:
Cloudox
2021/11/23
2.4K0
C语言——oj刷题——字符串左旋和轮转数组
实现: 当我们谈到字符串左旋时,我们指的是将字符串中的字符向左移动一定数量的位置。这个问题在编程中非常常见,特别是在字符串处理和算法实现中。
GG Bond1
2024/06/14
890
C语言——oj刷题——字符串左旋和轮转数组
C语言程序设计之小系统
本系统是一个综合管理系统,旨在将本学期学习的各类小程序整合在一起,提供一个用户友好的界面,方便用户选择并解决不同类别的问题。系统通过菜单展示可用的功能,用户可以根据自己的需求选择相应的类别,系统将显示具体的问题内容并提供解答。
LucianaiB
2025/01/20
1090
C语言程序设计之小系统
回文字符串(Palindromic_String)「建议收藏」
上面的状态转移方程表示,当str[i]=str[j]时,如果str[i+1…j-1]是回文串,则str[i…j]也是回文串;如果str[i+1…j-1]不是回文串,则str[i…j]不是回文串。 初始状态
全栈程序员站长
2022/09/06
1.2K0
回文字符串(Palindromic_String)「建议收藏」
C语言和C++中的字符串(string)
C语言字符串是字符的数组。单字节字符串顺序存放各个字符串,并用'\0'来表示字符串结束。在C语言库函数中,有一系列针对字符串的处理函数,比如说strcpy()、sprintf()、stoi()等,只能用于单字节字符串,当然也有一些函数用于处理Unicode字符串,比如wcscpy()、swprintf()等
用户7886150
2021/02/16
3.1K0
算法-反转字符串与反转单词
该文介绍了如何反转字符串和反转单词,并对字符串反转问题进行了分析,提出了一些优化方案。同时,对于反转单词的问题,也给出了解决方案。最后,给出了反转字符串的完整代码。
chaibubble
2018/01/02
1.5K0
算法思想总结:字符串
思路1:两两比较 时间复杂度mn 实现findcomon返回两两比较后的公共前缀
小陈在拼命
2024/07/16
1020
算法思想总结:字符串
151. 翻转字符串里的单词
reverse-words-in-a-string 一、描述 151. 翻转字符串里的单词 给定一个字符串,逐个翻转字符串中的每个单词。 说明: 无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 进阶: 请选用 C 语言的用户尝试使 ,意思是说原地反转。 输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但
早起的鸟儿有虫吃
2020/07/02
9410
151. 翻转字符串里的单词
深入解析字符串刷题技巧:从基础到进阶
字符串是编程中常见且重要的基础数据类型,特别是在刷题过程中,它经常与其他数据结构和算法相结合,成为关键的一环。本篇博客将系统性地探讨字符串相关的典型题目,分享高效的解题思路与技巧,帮助你在刷题时游刃有余。
suye
2025/05/29
990
深入解析字符串刷题技巧:从基础到进阶
【C语言典例】:倒置字符串
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
用户10517932
2023/10/07
3210
【C语言典例】:倒置字符串
每天一道leetcode151-反转字符串里的单词
输入: "the sky is blue", 输出: "blue is sky the". 说明:
乔戈里
2019/09/17
6490
每天一道leetcode151-反转字符串里的单词
相关推荐
【算法与数据结构】将字符串中最长的单词输出
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验