C语言基础:写一个函数,输入一行字符,将此字符串最长的单词输出

方法一:

#include<string.h>
int find_longest(char line[])//把数组传过来
{
    int is_alphabetic(char word);
    int i = 0;
    int length = 0;//统计每个字符串的长度
    int max = 0;//比max长就把值赋值给max
    int place = 0;//最长单词的起始位置
    int point;//每个字符串第一个字符的下标
    for (i = 0; i <= strlen(line); i++)//字符有空格和'\0'
    {
        if (is_alphabetic(line[i]))
        {
            length++;   
        }
        else //遇到空格或'\0'
        {
            point = i - length;
            if (length >= max)  //输入的字符串万一有相等的呢?
            {
                place = point;
                max = length;
            }
            length = 0;//重新统计下一个字符串长度
        }
    }
    return place;
}
int is_alphabetic(char word)//word形参,接收数组传来的实参line[i]
{
    if ((word >= 'a' && word <= 'z' )|| (word >= 'A' && word <= 'Z'))
        return 1;//是字母,返回1。
    else
        return 0;//不是,返回0。
}
int main()
{
    int find_longest(char line[]);
    int is_alphabetic(char word);
    char line[100];
    int i = 0;
    printf("input one line:\n");
    gets(line);//输入可能不是单词,是空格,所以写一个函数判断
    printf("The longest word is:\n");
    for (i = find_longest(line); is_alphabetic(line[i]); i++)
           printf("%c", line[i]);
    printf("\n");
    return 0;
}

方法二:(错误),自己到时改正了会修改

#include<string.h>
void LongestWord(char str[], char word[])
{
    int max_len = 0;
    int len = 0;
    int i = 0;
    while (str[i] != '\0')
    {
        if (str[i] == ' ')
        {
            str[i] = '\0';
            len = strlen(str);
            if (len > max_len)
            {
                max_len = len;
                strcpy(word, str);
                str = str + len + 1;
            }
        }
        i++;
    }
}
int main()
{
    char line[100] = { 0 };
    char word[100] = { 0 };
    printf("input one line:\n");
    gets(line);
    LongestWord(line, word);
    printf("The longest word is : %s\n", word);
    return 0;
}

方法三:

#include<string.h>
void findlong(char str[], char word[]) {
    int i = 0, j = 0;
    int len = 0;
    while (str[i] != '\0') 
    {
        j = i;
        while (str[j] != ' ' && str[j] != '\0')
            j++;
        len = j - i;
        if (len > strlen(word))
        {
            strncpy(word, str + i, len);//拷贝临时最长单词 
        }
        j++;
        i = j;
    }
}
int main() 
{
    char str[100] = { 0 };
    printf("请输入一个字符串:\n");
    gets(str);
    char word[20] = { 0 };
    findlong(str, word);
    printf("这个字符串最长单词为:\n%s\n", word);
    return 0;
}

方法四 :

#include<ctype.h>
#include<string.h>

//获取最大单词
char CurWord[100];
char MaxWord[100];

char* Get_MaxWord(const char* str)
{
    int len_cur = 0;//保存临时单词空间内的长度
    int len_max = 0;//保存最大单词空间内的长度

    while (*str != '\0')
    {
        if (isalpha(*str))//如果为真   代表指针str指向的字符是一个字母字符
        {
            CurWord[len_cur++] = *str;
        }
        else
        {
            if (len_cur > len_max)
            {
                strcpy(MaxWord, CurWord);
                len_max = len_cur;
                //len_cur = 0;
            }
            len_cur = 0;
        }

        str++;
    }

    if (len_cur > len_max)
    {
        strcpy(MaxWord, CurWord);
    }

    return MaxWord;
}
int main()
{
    char arr[100];
    printf("请输入一个字符串:\n");
    const char* str = gets(arr);
    printf("这个字符串最长单词为:\n%s", Get_MaxWord(str));
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/353948.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习的数据库积累........

https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1_detection_zoo.md ​​​​​​​ 另一个database:&#xff08;网址:Object Detection Made Easy with TensorFlow Hub: Tutorial&#xff09; Object Detection Made Easy with Ten…

Android底部导航栏创建——ViewPager + RadioGroup

Android底部导航栏有多种实现方式&#xff0c;本文详解其中的ViewPager RadioGroup方式的实现步骤。 我们先来看以下看一下最终做出的效果&#xff0c;使大家有个基本概念。 本结构特点&#xff1a; 1&#xff0c;ViewPager部分触摸左右滑动切换页面&#xff0c;RadioGroup部…

XXL-JOB

SpringTask这种任务只能放在单机节点下&#xff0c;就是说一个程序只跑一份的情况下&#xff0c;用SpringTask做定时任务没有什么问题&#xff0c;而且很好用&#xff0c;但是一旦这个程序需要运行多份&#xff0c;定时任务用SpringTask就不行了。多份代码重复执行了。 要解决…

React中文官网已经搬迁了,原网址内容将不再更新

注意1&#xff1a;React中文官网已经搬迁至-React 官方中文文档&#xff0c;原网址内容将不再更新 注意2&#xff1a;React官网已经将React的定义由“用于构建用户界面的 JavaScript 库”更改为“用于构建 Web 和原生交互界面的库”。

Power ModeII 插件的下载与使用-----idea

下载 Marketplace里面搜索下载即可 使用 下载后重启软件就可以用了 下面是一些关于Power ModeII &#xff0c;我的个性化设置截图 以及相关设置解释 插件或扩展的设置面板【用于给代码编辑器或集成开发环境&#xff08;IDE&#xff09;添加视觉效果】 主要设置 ENTER POWE…

GEE数据集——2024 年日本海地震的紧急观测数据

2024 年日本海地震的紧急观测数据 2024 年日本海地震发生在 2024 年 1 月 1 日下午 4:00 后&#xff08;日本时间&#xff09;&#xff0c;造成了重大损失&#xff0c;包括多处建筑物倒塌、山体滑坡和火灾。应日本国内防灾机构的请求&#xff0c;JAXA 利用 ALOS-2 对灾害发生当…

Jenkins邮件推送配置

目录 涉及Jenkins插件&#xff1a; 邮箱配置 什么是授权码 在第三方客户端/服务怎么设置 IMAP/SMTP 设置方法 POP3/SMTP 设置方法 获取授权码&#xff1a; Jenkins配置 从Jenkins主面板System configuration>System进入邮箱配置 在Email Extension Plugin 邮箱插件…

操作日志应记录编辑的前后内容变化

总体思路是增加一个注解类&#xff0c;将注解加到要进行记录变化的Java类属性上却可。 上代码&#xff1a; 1. 实现注解类&#xff1a; Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) public interface FieldName {String value();boolean isIgnoreNull()…

六、VTK创建平面vtkPlaneSource

vtkPlaneSource创建位于平面中的四边形数组 先看看效果图: vtkPlaneSource 创建一个 m x n 个四边形数组,这些四边形在平面中排列为规则平铺。通过指定一个原点来定义平面,然后指定另外两个点,这两个点与原点一起定义平面的两个轴。这些轴不必是正交的 - 因此您可以创建平行…

基于yolov5的数据集自动标注功能脚本工具【附代码】

近年来&#xff0c;随着深度学习的迅猛发展&#xff0c;计算机视觉领域取得了巨大的突破。其中&#xff0c;目标检测是计算机视觉中的一个重要任务&#xff0c;它在许多应用领域中起到了至关重要的作用。然而&#xff0c;目标检测所需的大量标注数据集的制作却是一项耗时且繁琐…

FlashInternImage实战:使用 FlashInternImage实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

mac配置L2TP连接公司内网

1. 打开系统设置 2. 打开网络 3. 点击网络页面其他服务右下角三个点&#xff0c;添加VPN配置中的L2TP 4. 配置VPN&#xff0c;服务器填写公司的服务器ip&#xff0c;共享密钥没有可以随便填写 5. 打开终端编辑文件 sudo vim /etc/ppp/opt…

Linux系统简介及发展历史

Linux的概况 Linux是自由软件 Linux是一种类UNIX操作系统。Linux内核由Linus Torvalds在1991年发布。在加上用户空间的应用程序之后&#xff0c;成为Linux操作系统 只要遵循GNU通用公共许可证&#xff08;GPL&#xff09;&#xff0c;任何个人和机构都可以自由地使用Linux的所…

网络安全02--负载均衡下的webshell连接

目录 一、环境准备 1.1ubentu虚拟机一台&#xff0c;docker环境&#xff0c;蚁剑 1.2环境压缩包&#xff08;文件已上传资源&#xff09;&#xff1a; 二、开始复原 2.1上传ubentu&#xff1a; 2.2解压缩 2.3版本20没有docker-compose手动下载&#xff0c;包已上传资源 …

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心,Kotlin(2)

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心&#xff0c;Kotlin&#xff08;2&#xff09; 在 Android ScaleGestureDetector检测双指缩放Bitmap基于Matrix动画移动到双指捏合中心点ImageView区域中心&#xff0c;Kotlin-CSDN博客 …

vue+Element UI实现省市区镇四级联动

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 在一些需要填写地址的前端页面中&#xff0c;总是少不了需要填写地址的级联选择器&#xff0c;类似这样的&…

【Linux】第三十六站:信号

文章目录 一、信号的概念1.信号概念2.前台与后台进程3.信号的处理4.硬件层面5.信号与我们的代码是异步的 二、信号的产生1.产生的方式2.键盘组合键3.kill命令4.系统调用4.1 kill系统调用4.2 raise4.3 abort 5.异常软件条件5.1 异常产生信号5.2 alarm&#xff08;软件条件产生信…

【Linux】第三十七站:信号保存

文章目录 一、信号发送二、信号保存1.为什么要进行信号保存&#xff1f; 三、阻塞信号1.信号的一些相关概念2.在内核中的表示3.sigset_t4.信号集操作函数5.sigprocmask6.sigpending7. 总结 一、信号发送 如下所示&#xff0c;对于普通信号&#xff0c;它的编号是从1~31。这个是…

N-141基于springboot,vue网上拍卖平台

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatis-plusredi…

九州金榜|为什么鼓励式家庭教育?

鼓励式教育是一种积极的教育方式&#xff0c;它强调通过鼓励和肯定来激发孩子的积极性和自信心&#xff0c;帮助孩子更好地成长和发展。在家庭教育中&#xff0c;鼓励式教育同样具有重要意义。九州金榜家庭教育和大家一起探讨关于鼓励式教育的好处以及意义&#xff1a; 一.有助…