使字符串的单词倒序输出表示

题目

任务描述

本关任务:请实现函数 revWordoder,能够将 pa 指向的单词表字符串中的所有单词,按相反顺序放入 pb,同时去除多余的空格,单词之间只留一个空格.

例如 pa 中为 red blue, 则调用函数后,pb 中为blue red

主函数中,由用户输入不超 100 个单词,调用函数后,倒序输出。

相关知识

为了提高程序的通用性和可维护性,代码中用常量表示单词个数。

  1. #define WORDNUM 100

预处理命令 #define ,编译器编译时,会将所有WORDNUM替换成 100。

解题思路

字符串逆序本来是很容易的事情,但这道题比较麻烦的地方是,题目里要求以单词为单位进行逆序处理,但是原始数据的组织是字符数组,即以字符为单位的。因此比较简单的处理是用指针数组重新组织 pa, 让每一个数组元素指向一个单词字符串。 例如 pa中的字符串为” red blue orange “

,

这里组织的单词表,以后怎么处理都方便。

实现也比较简单,用指针 p 遍历 pa,在遍历的循环过程中,反复执行三个步骤:

  • 让p跳过连续空格,并用串尾'\0'替换空格(这里不替换也可以,只是从程序的通用性和可扩展性来看,加串尾更好。

  • 完成上一步骤后p必然指向某单词首地址,可给pword[i]赋值

  • 让p跳过该单词的其他字母,即跳非空格和非‘\0’的字符,回到第一步,准备给下一个pword[i]赋值。(注意,这里不建议使用大小写字母作判断,因为用户有可能输错单词的个别字母,要有容错性)

编程要求

根据提示,在右侧编辑器 Begin-End 内补充代码,请实现函数 revWordorder,能够将 pa 指向的字符串中的所有单词,按相反顺序放入 pb,同时去除多余的空格,单词之间只留一个空格.

主函数中,由用户输入不超 100 个单词,调用函数后,倒序输出。

测试说明

平台会对你编写的代码进行测试:

测试输入: Whatever worth well uitility use ; 预期输出: use uitility well worth Whatever

代码 

#include <iostream>
#include <cstring>
using namespace std;
#define WORDNUM 100void revWordorder(char *pa, char *pb);
int main()
{char stra[WORDNUM*20], strb[WORDNUM*20];cin.getline(stra,WORDNUM*20); // 输入不超过100个单词,以空格间隔revWordorder(stra,strb);// 逆序放入strbcout << strb;return 0;
}
//函数revWordoder: 将pa指向的字符串中的所有单词,按相反顺序放入pb,单词之间只留一个空格
//例如 pa中为 red blue, 则调用函数后,pb中为blue red
//提示:用指针数组重新组织pa,让每一个数组元素指向一个单词字符串
void revWordorder(char *pa, char *pb)
{//=======begin======pb[0]='\0';char *words[WORDNUM]; // 指针数组,用于存储每个单词的指针int wordCount = 0; // 单词计数器// 遍历输入字符串pa,将每个单词的指针存入指针数组words中char *word = strtok(pa, " "); // 使用空格作为分隔符,获取第一个单词while (word != nullptr) {words[wordCount++] = word; // 存储单词指针到数组中word = strtok(nullptr, " "); // 继续获取下一个单词}// 将单词逆序放入字符串pbfor (int i = wordCount - 1; i >= 0; i--) {strcat(pb, words[i]); // 将当前单词追加到结果字符串pb中if (i > 0) {strcat(pb, " "); // 在单词之间添加一个空格}}//========end========
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MIT线性代数笔记-第17讲-正交矩阵,Schmidt正交化

目录 17.正交矩阵&#xff0c; S c h m i d t Schmidt Schmidt正交化打赏 17.正交矩阵&#xff0c; S c h m i d t Schmidt Schmidt正交化 “标准”经常表示单位长度 标准正交基&#xff1a;由两两正交的单位向量组成的基 将标准正交基中的元素记作 q ⃗ 1 , q ⃗ 2 , ⋯ , q …

基于FactoryBean、实例工厂、静态工厂创建Spring中的复杂对象

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

公司网站遇到HTTPS攻击,有什么办法解决

随着互联网的不断发展和进步&#xff0c;Web应用程序的重要性不断提升。Web应用程序往往需要承载大量的用户数据&#xff0c;在传输过程中&#xff0c;为了保护数据安全&#xff0c;往往使用HTTPS协议进行数据加密。但是&#xff0c;HTTPS协议也面临着各种攻击的威胁&#xff0…

会声会影2024旗舰版系统配置要求及格式支持

会声会影2024旗舰版是一款广受欢迎的视频编辑软件&#xff0c;它的最新版本&#xff0c;会声会影2023&#xff0c;已经发布。在这篇文章中&#xff0c;我们将探讨会声会影2024旗舰版系统配置要求及格式支持 会声会影2024是一款专业的视频剪辑软件&#xff0c;能够帮助用户制作高…

如何在h5和小程序中适配iphoneX及更高版本全面屏底部的安全区

关键词 IOS 前言 在项目开发的过程中&#xff0c;需要IOS全面屏底部安全区适配 步骤 h5需要设置页面属性&#xff1a; <meta name"viewport"content"widthdevice-width, initial-scale1, maximum-scale1, user-scalableno,viewport-fitcover">2.…

geemap学习笔记016:获取图像的基本属性和描述性信息

前言 遥感数据中通常包含众多信息&#xff0c;例如图像获取的时间、云覆盖量、以及每个波段的最大值最小值等等。 1 导入库并显示地图 import ee import geemapMap geemap.Map() Map2 添加图像数据 centroid ee.Geometry.Point([-122.4439, 37.7538]) #创建一个点坐标lan…

Spark SQL,DF,RDD cache常用方式

RDD中的cache 调用cache方法 val testRDD sc.parallelize(Seq(elementA, elementB, elementC)).map(x > (x._1, x._2)).setName("testRDD")testRDD.cache() dataframe中的cache 利用catalog以表的形式对数据进行缓存 import org.apache.spark.SparkConf impo…

腾讯面试真题(C语言)

一.题目 求123...n&#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句&#xff08;A?B:C&#xff09;。 二.题目剖析 首先题目要求不能用乘除&#xff0c;那么&#xff08;首相末项&#xff09;*项数/2就不能用&#xff0c;其次不…

springcloud==openfeign

单独使用 创建一个服务端 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.Path…

浅析函数防抖节流

防抖和节流都是前端开发中常用的优化性能的技术。 一、定义 防抖&#xff1a; 防抖指的是在事件触发后&#xff0c;在规定的时间内若再次触发&#xff0c;则重新计时&#xff0c;直到规定时间内没有再次触发事件&#xff0c;才执行事件处理。这样可以避免在短时间内频繁地触发…

Redis实战命令

实战命令 单值缓存 set key value get key 对象缓存 &#xff08;1&#xff09;set user:1 value(json格式) &#xff08;2&#xff09;mset user:1:name junfeng user:1:age 18 mget user:1:name user:1:age 分布式锁 分布式锁解决了什么问题&#xff1f; 分布式锁解…

2 线、3 线和 4 线 RTD 配置之间有什么区别?

电阻温度检测器 (RTD) 是温度传感器的一种&#xff0c;由于其准确性、可重复性和稳定性而广泛应用于各种工业应用。这些设备通过感测材料温度变化时电阻的变化来测量温度。 RTD 探头有多种配置&#xff0c;包括 2 线、3 线和 4 线型号。这些类型之间存在显着差异&#xff0c;在…

【干货】接口公共方法(字典表查询)

公共方法 import * as api from /api/commonAjax.js;//获取字典表 const getAjaxListCommonfunction(mm,backfun) {let ajaxFun""if(mm1){//字典表1ajaxFun"getAjax1"}else if(mm2){//字典表2ajaxFun"getAjax12"}api[ajaxFun]({}).then((res)&g…

唯创知音WT2003H系列MP3录音语音芯片:多样封装,录音时长可达70S,满足各种应用需求

在日益发展的电子产品市场中&#xff0c;音频芯片作为产品的重要组成部分&#xff0c;对于提升用户体验和产品质量具有不可忽视的作用。唯创知音的WT2003H系列MP3录音芯片便是其中的佼佼者&#xff0c;其录音时长最多可录70S&#xff08;采样率为8K&#xff09;&#xff0c;并且…

世岩清上:档案馆展厅设计的特色化

档案馆展厅设计的特色化不仅可以增强参观者的体验感&#xff0c;还可以更好地展现档案馆的历史文化价值。 在设计档案馆展厅时&#xff0c;我们可以通过以下几个方面来让其更具特色&#xff1a; 一、主题明确 首先&#xff0c;确定展厅的主题是关键。可以是档案馆的历史沿革…

git本地新建分支推送到其它分支

1&#xff0c;源码下完成bsp和项目环境配置 2&#xff0c;提交到gitlab master源码仓库 3&#xff0c;在本地仓库新建并切换分支 git branch rel_xxxgit checkout -b rel_xxx4&#xff0c;打包 5&#xff0c;新分支提交本地 6&#xff0c;git切换仓库到项目仓库 git remote ren…

Css解决浏览器缩放后,边框与图片之间有空白的问题

关键词 Css 前言 在项目开发的过程中&#xff0c;提高浏览器分辨率后&#xff0c;边框与图片之间会显示一点空白 原因 当缩放到175%时&#xff0c;应该1.75格代表1像素&#xff0c;但由于硬件层次限制&#xff0c;比如一格用四个物理像素点绘制&#xff0c;0.25格就不绘制&…

智能优化算法应用:基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.回溯搜索算法4.实验参数设定5.算法结果6.参考…

ubuntu改window任务栏

经常在ubuntu和win之间切换&#xff0c;任务栏的布局不统一会让人很别扭&#xff0c;个人很喜欢win任务栏的不折叠图标功能&#xff0c;而ubuntu没有&#xff0c;又很喜欢的ubuntu的多工作空间&#xff0c;效率比副屏还高&#xff0c;还可以自定义切换工作空间的快捷键。鱼和熊…

2023-11-28-直播单细胞图表美化-seurat数据结构 featureplot dotplot vlnplot

单细胞常见的可视化方式有DimPlot&#xff0c;FeaturePlot &#xff0c;DotPlot &#xff0c;VlnPlot 和 DoHeatmap几种 &#xff0c;Seurat中均可以很简单的实现&#xff0c;但是文献中的图大多会精美很多。 之前 跟SCI学umap图| ggplot2 绘制umap图&#xff0c;坐标位置 &am…