当前位置: 首页 > news >正文

【每日一题】 将一句话单词倒置,标点不倒置

用C语言将一句话的单词倒置,标点不倒置。

比如输入: i like shanghai.

输出得到: shanghai. like i

这道题目有很多种做法,既可以用递归,也可以分成两部分函数来写,本文就详细来讲解分装为两个函数的做法。

思路:我们可以轻易实现一个字符串的倒置,可以先将整个字符串来倒置,然后再设置函数来倒序每一个单词,用空格作为区分每个单词的标志,这样下来就可以实现将一句话单词倒置,标点不倒置。

主函数如下所示。

int main()
{char s[100] = { 0 };gets_s(s);int start=0, end=strlen(s);reverse(start, end, s);reverse_word(start, end, s);printf("%s", s);return 0;
}

1.reverse函数的构建

首先构建reverse函数来实现整个字符串的逆转,只需创建一个中间变量即可。

void reverse(int start, int end, char s[])
{end--;while (start < end){char tmp = s[start];s[start] = s[end];s[end] = tmp;start++;end--;}
}

需要注意的是,为了保证下标不在标点的位置,即为了不交换符号,end一定要-1。

如果不想再函数内部减一的话,可以在进行函数传参的时候减一。 

2.reverse_word函数的创建

接下来创建将每一个单词逆转的函数,我们使用两个while循环

外层循环的循环条件为while (s[end] != '\0'),当end的位置走到'\0'的位置时,循环结束。

内部的while循环是将end移位到一个单词的末尾,也就是空格的位置,与在开头的start共同将一个单词锁定,接着就可以再次调用上面的reverse函数实现单词的逆序。

要注意的是,单词的末尾可能是'\0',为了防止s[end]取到零值而导致函数提前结束,我们将不等于零值也变为循环的条件。

将一个单词逆序之后,我们将目标转换为下一个单词,先将end的值赋给start,再让end移位到下一个空格处,锁定第二个单词

void reverse_word(int start, int end, char s[])
{start = 0, end = 0;while (s[end] != '\0'){while (s[end] != ' '&&s[end]!='\0'){end+=1;}reverse(start, end, s);start = end+1;if(s[end]!='\0')end += 1;}
}

 完整代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>void reverse(int start, int end, char s[])
{end--;while (start < end){char tmp = s[start];s[start] = s[end];s[end] = tmp;start++;end--;}
}
void reverse_word(int start, int end, char s[])
{start = 0, end = 0;while (s[end] != '\0'){while (s[end] != ' '&&s[end]!='\0'){end+=1;}reverse(start, end, s);start = end+1;if(s[end]!='\0')end += 1;}
}
int main()
{char s[100] = { 0 };gets_s(s);int start=0, end=strlen(s);reverse(start, end, s);reverse_word(start, end, s);printf("%s", s);return 0;
}

文章如果有问题的话,还请大佬们不吝赐教!

如果您觉得我写的不错,不妨点个赞支持一下哦~

 

相关文章:

【每日一题】 将一句话单词倒置,标点不倒置

用C语言将一句话的单词倒置&#xff0c;标点不倒置。 比如输入&#xff1a; i like shanghai. 输出得到&#xff1a; shanghai. like i 这道题目有很多种做法&#xff0c;既可以用递归&#xff0c;也可以分成两部分函数来写&#xff0c;本文就详细来讲解分装为两个函数的做法。…...

宽刈幅干涉雷达高度计SWOT(Surface Water and Ocean Topography)卫星进展(待完善)

> 以下信息搬运自SWOT官方网站等部分文献资料&#xff0c;如有侵权请联系&#xff1a;sunmingzhismz163.com > 排版、参考文献、部分章节待完善 > 2023.02.17.22:00 初稿概况 2022年12月16日地表水与海洋地形卫星SWOT (Surface Water and Ocean Topography)在加利福尼…...

openjdk源码==类加载过程

jdk\src\share\bin\main.c main JLI_Launch jdk\src\share\bin\java.c JLI_Launch jdk\src\solaris\bin\java_md_solinux.c JVMInit ContinueInNewThread JavaMain InitializeJVM jdk\src\share\bin\java.h CreateJavaVM 调用JNI hotspot\src\share\vm\prims\j…...

vue2的后台管理系统 迁移到 vue3后台管理系统

重构的流程1.新建项目,确定脚手架版本2.项目整体迁移3.重构路由,axios,element-plus等项目所需要的依赖4.迁移组件内容(需要的配置项移步到5目录and6目录)4-1.Login页面4-2. Home页4-3.Students管理内部的页面4-3-1.studentList(学生列表)4-3-2.InfoList(信息列表)4-3-3.InfoLi…...

2023年美赛F题

关键点1.绿色GDP(GGDP)是否比传统GDP更好好的衡量标准?2.如果GGDP成为经济健康的主要量标准&#xff0c;可能会对环境产生什么影响?3建立一个简单的模型&#xff0c;估计GGDP取代GDP作为经济健康的主要衡量标准&#xff0c;对减缓气候变化产生的影响。4.GGDP取代GDP可能会遇到…...

【数据结构与算法分析】介绍蛮力法以及相关程序案例

文章目录蛮力法之排序选择排序冒泡排序实际应用蛮力法之最近对和凸包问题最近对问题凸包问题蛮力法(brute force)&#xff0c;其本质跟咱常说的暴力法是一样的&#xff0c;都是一种简单直接地解决问题的方法&#xff0c;通常直接基于问题的描述和所涉及的概念定义进行求解。 蛮…...

用股票交易量查询接口是怎么查询a股全天总成交量的?

用股票交易量查询接口是怎么查询a股全天总成交量的&#xff1f;今天下班就以通达信给大家讲解一下&#xff0c;通常是在K线图的底部状态栏&#xff0c;可以在日线进行查看a股成交量。在市场栏底部的子图中。 有当天成交的数量。成交量是表示一定的时间内已经成交的中的成交数量…...

求职季哪种 Python 程序员能拿高薪?

本文以Python爬虫、数据分析、后端、数据挖掘、全栈开发、运维开发、高级开发工程师、大数据、机器学习、架构师这10个岗位&#xff0c;从拉勾网上爬取了相应的职位信息和任职要求&#xff0c;并通过数据分析可视化&#xff0c;直观地展示了这10个职位的平均薪资和学历、工作经…...

如何选择好的IB课程学校?

在上海除了拼中考&#xff0c;你还可以走一条更有“选择权”的路——国际化学校&#xff01; 然而选择学校时&#xff0c;让家长最头痛的事情&#xff0c;莫过于为孩子选择什么样的国际化课程。 今天我们来聊聊IB课程&#xff01; 三大主流国际课程中&#xff0c;被公认含金量最…...

2023美赛ABCDEF题思路+参考文献+代码

选题建议、ABCDEF题参考文献、ABCDEF题思路&#xff08;后续更新视频和代码&#xff09;、D题数据、数据集及处理方式已更新&#xff0c;其他日内更新。下文包含&#xff1a;2023年美国大学生数学建模竞赛&#xff08;以下简称美赛&#xff09;A - F题思路解析、选题建议、代码…...

DataEase 制作数据可视化大屏经验分享

前言 DataEase 简介 DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务的改进与优化。DataEase 支持丰富的数据源连接&#xff0c;能够通过拖拉拽方式快速制作图表&#xff0c;并可以方便地与他人分享。 更多详细介…...

前端基础-2day

前端基础 这里写目录标题前端基础div和span标签div 标签span标签列表有序列表无序列表自定义列表图片超链接标签表格 table表格合并表单标签表单控键属性div和span标签 div 标签 没有具体的含义&#xff0c;用于划分页面区域&#xff0c;独占一行 快捷键&#xff1a;div{}*3 …...

在线一键JS混淆还原

当今&#xff0c;随着互联网的发展&#xff0c;越来越多的网站开始使用JavaScript来实现动态交互和用户体验。但是&#xff0c;由于JavaScript代码的开放性和易于复制&#xff0c;网站管理员需要采取一些措施来保护他们的代码。这就是JavaScript混淆工具产生的原因。 jsjiami.…...

Java基本语法

目录 一、注释方式 1、单行注释 // 2、多行注释 /*...*/ 3、文档注释 /**....*/ 二、标识符和关键字 三、数据类型 拓展及面试题讲解 1、整数拓展 进制 二进制0b 八进制0 十六进制0x 2、字符拓展 编码Unicode表 2字节 0~65536 3、字符串拓展 4、布尔值拓展 一、注释方式…...

什么表单设计工具能快速提升办公效率?

在信息化快速发展的年代&#xff0c;谁能掌握更先进的技术&#xff0c;谁就能拥有更广阔的发展前景。在以前的办公环境中&#xff0c;传统的表单制作工具占据了主流地位&#xff0c;随着办公自动化的快速发展&#xff0c;传统表单工具的弊端也暴露出来了&#xff0c;采用更先进…...

SystemVerilog——Axi4Lite_To_Localbus

摘要&#xff1a;用SystemVerilog对Axi4转localbus进行编写与仿真 如果需要从PS端对PL进行寄存器的读写操作&#xff0c;从znyq M_AXI_HPM_FPD出来&#xff0c;经过axi_interconnect 模块分出多个通道&#xff08;不同的地址&#xff09;&#xff0c;经过一个axi_slave模块&am…...

硬件_IMX6ULL的LCD控制器

硬件_IMX6ULL的LCD控制器 文章目录硬件_IMX6ULL的LCD控制器一、 LCD控制器模块介绍1.1 硬件框图1.2 数据传输与处理1.3 时序控制二、 LCD控制器寄存器简介2.1 LCDIF_CTRL寄存器2.2 LCDIF_CTRL1寄存器2.3 LCDIF_TRANSFER_COUNT寄存器2.4 LCDIF_VDCTRL0寄存器2.5 LCDIF_VDCTRL1寄…...

ICLR 2022—你不应该错过的 10 篇论文(下)

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 ICLR 2023已经放榜&#xff0c;但是今天我们先来回顾一下去年的ICLR 2022&#xff01; ICLR 2022将于2022年 4 月 25 日星期一至 4 月 29 日星期五在线举行&#xff08;连续第三年&#xff01;&#x…...

国内外优秀程序员的私域博客大全

文章目录 国内外优秀程序员的私域博客大全**国内的优秀程序员****国外的优秀程序员**结语国内外优秀程序员的私域博客大全 国内的优秀程序员 1、风雪之隅-惠新宸 擅长领域:PHP、PECL等 Laruance惠新宸——国内最有影响力的PHP技术专家,PHP开发组核心成员, Zend顾问, PHP7及…...

【C++ Primer Plus】第六章:分支语句和逻辑运算符

文章目录第六章 分支语句和逻辑运算符6.1 字符函数库cctype6.2 ?:运算符6.3 读取数字的输入6.4 cin的处理过程char类型intdoublechar数组使用char数组来存储输入6.5 写入到文本文件中6.6 读取文本文件6.7 总结第六章 分支语句和逻辑运算符 6.1 字符函数库cctype C从C语言继承…...

堡垒机的主要功能是什么?为什么需要堡垒机?

堡垒机是一种用于管理和控制服务器的工具&#xff0c;其主要功能是为管理人员提供安全、便捷的远程管理和操作方式。为什么需要堡垒机呢&#xff1f;下面我们将详细阐述堡垒机的主要功能和必要性。 一、堡垒机的主要功能&#xff1a; ①、用户认证和授权管理&#xff1a;堡垒机…...

记录spring中Transactional事务注解失效的六个场景

记录spring中Transactional事务注解失效的六个场景 方法内的自调用 原因&#xff1a;通过this内部调用其他带有Transactional注解的方法&#xff0c;是通过this进行调用&#xff0c;并没有通过cglib代理对象进行调用&#xff0c;导致方法未被增强导致无法检测内部事务 解决方…...

【23种设计模式】行为型模式详细介绍(下)

前言 本文为 【23种设计模式】行为型模式 相关内容介绍&#xff0c;下边将对访问者模式&#xff0c;模板模式&#xff0c;策略模式&#xff0c;状态模式&#xff0c;观察者模式&#xff0c;备忘录模式&#xff0c;中介者模式&#xff0c;迭代器模式&#xff0c;解释器模式&…...

dbeaver工具连接达梦数据库

、一 概述 DBeaver 是一个基于 Java 开发&#xff0c;免费开源的通用数据库管理和开发&#xff0c;DBeaver 采用 Eclipse 框架开发&#xff0c;支持插件扩展&#xff0c;并且提供了许多数据库管理工具&#xff1a;ER 图、数据导入/导出、数据库比较、模拟数据生成等&#xff0…...

比Teambition、Worktile 更适合研发团队的几大工具盘点

Worktile 和 Teambitiom 哪个更好&#xff1f;两个产品各有特点。1.Teambition 优势&#xff1a;操作简单、个人版永不收费、更适合小型团队&#xff1b;2.Teambition 劣势&#xff1a;无法满足中大型团队复杂的项目管理、自定义能力弱、无法与钉钉以外的工具打通等&#xff1b…...

matlab图像处理常用功能以及函数

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、matlab灰度处理相关二、形态学的一些函数1.腐蚀2.膨胀3.开运算4.闭运算三、其他一些可能会用到的方法1.使用hough进行直线检测2.圆检测3.闭合形状检测4.寻找…...

eBPF 之 ProgramType、AttachType和InputContext

1. ProgramType 定义定义在 include/uapi/linux/bpf.h 文件中&#xff0c;不同 Linux 版本会有变化&#xff0c;以下是 Linux 5.19 版本定义&#xff1a;enum bpf_prog_type {BPF_PROG_TYPE_UNSPEC,BPF_PROG_TYPE_SOCKET_FILTER,BPF_PROG_TYPE_KPROBE,BPF_PROG_TYPE_SCHED_CLS,…...

C++运行时类型识别RTTI

C技能 runtime type identification(RTTI) 运行时类型识别在使用多态的时候经常用到。本文将会介绍RTTI的几个特征。1. 运行时类型转换下面的程序模仿了dynamic_cast<type_id>()类型转化符号&#xff0c;根据每个类的id来判断当前的类型&#xff0c;如果id不匹配&#xf…...

idea多时编辑多行-winmac都支持

1背景介绍 idea编辑器非常强大&#xff0c;其中一个功能非常优秀&#xff0c;很多程序员也非常喜欢用。这个功能能够大大大提高工作效率-------------多行代码同时编辑 2win 2.1方法1 按住alt鼠标左键上/下拖动即可 这样选中多行后&#xff0c;可以直接多行编辑。 优点&a…...

BI是报表?BI是可视化?BI到底是什么?

很多企业认为只要买一个前端商业智能BI分析工具就可以解决企业级的商业智能BI所有问题&#xff0c;这个看法实际上也不可行的。可能在最开始分析场景相对简单&#xff0c;对接数据的复杂度不是很高的情况下这类商业智能BI分析工具没有问题。但是在企业的商业智能BI项目建设有一…...

网站图标psd/徐州百度seo排名

2019独角兽企业重金招聘Python工程师标准>>> 搭建有3个消息生产者的简单Kafka集群。 复制server.properties&#xff1a; cp config/server.properties config/server-1.properties cp config/server.properties config/server-2.properties 分别编辑2个配置文件&am…...

怎么在悉尼做网站/百度快照不更新怎么办

mysql的优化器位于服务层&#xff0c;是查询高效的一个重要保证&#xff0c;但是它到底干了什么&#xff1f;你知道吗&#xff1f;将外连接转化成内连接并不是所有的OUTER JOIN语句都必须以外连接的方式执行。有诸多因素&#xff0c;例如WHERE条件、库表结构都可能会让外连接等…...

网站 公众号 建设方案/亚马逊关键词

2019独角兽企业重金招聘Python工程师标准>>> 在线工具:图片在线转base64&#xff0c;base64在线转图片工具 ####一、图片在线转base64 如下图&#xff0c;打开 http://www.it399.com/image/base64 将想要转换的图片拖动到在线助手的工具中即可自动完成将图片转成bas…...

上海网站建设选缘魁/长沙网站seo报价

这个问题是因为您的zsh配置使用了某些不安全的目录或文件。为了解决这个问题&#xff0c;您可以执行以下步骤&#xff1a; 打开终端并输入以下命令&#xff1a; compaudit 这个命令会列出所有不安全的目录和文件&#xff0c;其中一些可能需要更改权限。 修复不安全的目录和…...

c web网站开发/长沙百度搜索排名优化

1. 问题描述&#xff1a; Hercy 想要为购买第一辆车存钱。他每天都往力扣银行里存钱。最开始&#xff0c;他在周一的时候存入 1 块钱。从周二到周日&#xff0c;他每天都比前一天多存入 1 块钱。在接下来每一个周一&#xff0c;他都会比前一个周一多存入 1 块钱。给你 n &…...

做电影网站看电影算网站流量吗/培训课程开发

一、Scrapy Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架。可以应用在包括数据挖掘&#xff0c;信息处理或存储历史数据等一系列的程序中。。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。 二、PySpider pyspider 是一个用python实现…...