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

【C语言题解】将一句话的单词进行倒置,标点不倒置。

题目描述:将一句话的单词进行倒置,标点不倒置。比如 “I like beijing.”,经过处理后变为:“beijing. like I”。

文章目录

  • 原题目
    • 题目描述:
    • 输入描述:
    • 输出描述:
    • 题目链接:
  • 整体思路
  • 分步实现
    • 1. 输入字符串
    • 2. 逆序功能
    • 3. 整句话逆序
    • 4. 单词逆序
    • 5. 整体代码和oj结果
  • 写在最后

原题目

题目描述:

将一句话的单词进行倒置,标点不倒置。比如 “I like beijing.”,经过处理后变为:“beijing. like I”。
字符串长度不超过100。

输入描述:

输入一个仅包含小写字母、空格、‘.’ 的字符串,长度不超过100。
‘.’ 只出现在最后一个单词的末尾。

输出描述:

依次输出倒置之后的字符串,以空格分割。

题目链接:

https://www.nowcoder.com/questionTerminal/8869d99cf1264e60a6d9eff4295e5bab

整体思路

先将整句话逆序处理,然后再将每个单词进行逆序,这样一来整句话的顺序虽然颠倒了,但是单词因为逆序了两次,还是正常顺序。

分步实现

1. 输入字符串

利用gets函数输入获取整句话的字符串。

#include <stdio.h>
int main()
{char arr[100];gets(arr);//和scanf函数类似,获取键盘输入的字符printf("%s", arr);//测试是否获取到了return 0;
}

编译结果:
image.png

2. 逆序功能

自定义写一个reverse函数,利用指针来逆序字符串的内容,之所以写成函数是因为这个功能需要复用。
利用数组在栈区中存放时,下标由小到大,地址由低到高存放的原理,判断其首元素地址和末位元素的地址,如果左边的地址小于右边,使用指针进行元素交换,并且左边指针++,右边指针–,重新进行循环判断,直到左边大于等于右边,则跳出循环,这样就可以完成字符串的逆序操作。

#include<string.h>
void reverse(char* left, char* right)
{char tmp;while (left < right){tmp = *left;*left = *right;*right = tmp;left++;right--;}
}

3. 整句话逆序

利用strlen函数,求得字符串长度,就可以利用reverse函数将首元素地址,和首元素地址加字符串长度减一,将整句话逆序。

#include <stdio.h>
int main()
{char arr[100];gets(arr);int len = strlen(arr);reverse(arr, arr + len - 1);//传入首元素地址和末位元素地址printf("%s\n", arr);//测试用return 0;
}

编译结果:
image.png

4. 单词逆序

利用指针来判断是否遇到了空格或者\0,没有遇到的话,指针向前走,如果遇到了,就将之前的内容逆序一次,直到指针走到\0,跳出循环。

int main()
{char arr[100];gets(arr);int len = strlen(arr);reverse(arr, arr + len - 1);char* cur = arr;//cur作为光标遍历整个字符串并进行判断char* start = arr;//start作为每个单词的第一个元素地址指针用while (*cur){while (*cur != ' ' && *cur != '\0'){cur++;//不是空格或者\0,指针就向前走}reverse(start, cur - 1);//将这个单词的开头和末位地址传入reverse进行逆序start = cur + 1;//start去指向新单词的开头if (*cur != '\0')//直到*cur(数组元素)等于\0时,cur(指针)停止++,并且在while循环处跳出循环(因为\0就是0,为假){cur++;}}printf("%s\n", arr);//打印字符串return 0;
}

编译结果:
image.png

5. 整体代码和oj结果

#include <stdio.h>
#include<string.h>void reverse(char* left, char* right)
{char tmp;while (left < right){tmp = *left;*left = *right;*right = tmp;left++;right--;}
}int main()
{char arr[100];gets(arr);int len = strlen(arr);reverse(arr, arr + len - 1);char* cur = arr;char* start = arr;while (*cur){while (*cur != ' ' && *cur != '\0'){cur++;}reverse(start, cur - 1);start = cur + 1;if (*cur != '\0'){cur++;}}printf("%s\n", arr);return 0;
}

image.png

写在最后

如果本文对您有帮助,可不可以给我一个小小的点赞呀❤~您的支持是我最大的动力。

博主小白一枚,才疏学浅,难免有所纰漏,欢迎大家讨论和提出问题,博主一定第一时间改正。

谢谢观看嘿嘿(๑•̀ㅂ•́)و✧~!

相关文章:

【C语言题解】将一句话的单词进行倒置,标点不倒置。

题目描述&#xff1a;将一句话的单词进行倒置&#xff0c;标点不倒置。比如 “I like beijing.”&#xff0c;经过处理后变为&#xff1a;“beijing. like I”。 文章目录 原题目题目描述&#xff1a;输入描述&#xff1a;输出描述&#xff1a;题目链接&#xff1a; 整体思路分…...

Postman 的简单使用

什么是Postman 在程序开发中用于调试网络程序或者跟踪网页请求。可以对网页进行简单的基本信息调试。Postman最早是作用chrome浏览器插件存在的&#xff0c;但是2018年初Chrome停止对Chrome应用程序的支持。所以现在Postman提供了独立的安装包&#xff0c;不再依赖于Chrome浏览…...

在CentOS7安装部署GitLab服务

CentOS 7 安装 Gitlab 官方安装教程&#xff1a;https://about.gitlab.com/install/ 参考安装教程&#xff1a;https://developer.aliyun.com/article/74395 安装配置 Step1&#xff1a;配置yum源 vim /etc/yum.repos.d/gitlab-ce.repo存入以下内容&#xff1a; [gitlab-c…...

订单系统就该这么设计,稳的一批~

订单功能作为电商系统的核心功能&#xff0c;由于它同时涉及到前台商城和后台管理系统&#xff0c;它的设计可谓是非常重要的。就算不是电商系统中&#xff0c;只要是涉及到需要交易的项目&#xff0c;订单功能都具有很好的参考价值&#xff0c;说它是通用业务功能也不为过。今…...

Agents改变游戏规则,亚马逊云科技生成式AI让基础模型加速工作流

最近&#xff0c;Stability AI正式发布了下一代文生图模型——Stable Diffusion XL 1.0这次的1.0版本是Stability AI的旗舰版生图模型&#xff0c;也是最先进的开源生图模型。 在目前的开放式图像模型中&#xff0c;SDXL 1.0是参数数量最多的。官方表示&#xff0c;这次采用的…...

详细教程:如何搭建废品回收小程序

废品回收是一项环保举措&#xff0c;通过回收和再利用废弃物品&#xff0c;可以减少资源浪费和环境污染。近年来&#xff0c;随着智能手机的普及&#xff0c;小程序成为了推广和运营的重要工具。本文将详细介绍如何搭建一个废品回收小程序。 1. 进入乔拓云网后台 首先&#xf…...

什么是双亲委派机制?

什么是双亲委派机制&#xff1f; Parent Delegation Model &#xff0c;直译过来可能叫做父级委托模型更容易理解 类的加载过程 Java 编译器将 Java源文件编译成.class 文件再由 JVM 加载 .class 文件到内存中JVM 装载完成后得到一个 Class 字节码对象拿到字节码对象之后 &a…...

Mageia 9 RC1 正式发布,Mandriva Linux 发行版的社区分支

导读Mageia 9 首个 RC 已发布。公告写道&#xff0c;自 2023 年 5 月发布 beta 2 以来&#xff0c;Mageia 团队一直致力于解决许多顽固问题并提供安全修复和新特性。 新版本的控制中心添加了用于删除旧内核的新功能&#xff0c;该功能在 Mageia 9 中默认自动启用&#xff0c;用…...

ChatGPT: 人机交互的未来

ChatGPT: 人机交互的未来 ChatGPT背景ChatGPT的特点ChatGPT的应用场景结论 ChatGPT ChatGPT是一种基于大数据和机器学习的人工智能聊天机器人模型。它由国内团队发明、开发&#xff0c;并被命名为Mental AI。ChatGPT的目标是通过模拟自然对话的方式&#xff0c;提供高效、智能…...

Linux 常用操作命令

Linux简介及Ubuntu安装 Linux&#xff0c;免费开源&#xff0c;多用户多任务系统。基于Linux有多个版本的衍生。RedHat、Ubuntu、Debian 安装VMware或VirtualBox虚拟机。具体安装步骤&#xff0c;找百度。 再安装Ubuntu。具体安装步骤&#xff0c;找百度。 常用指令 ls  …...

24届近5年重庆邮电大学自动化考研院校分析

今天给大家带来的是重庆邮电大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、重庆邮电大学 学校简介 重庆邮电大学简称"重邮"&#xff0c;坐落于直辖市-重庆市&#xff0c;入选国家"中西部高校基础能力建设工程”、国家“卓越工程师教育培养计划…...

如何对oracle和mysql进行 分区分表

前提&#xff1a;使用自带的分区和分表机制进行操作 oracle,mysql分区分表 分区 分区是一种将一个大的表或索引分割成多个小的部分的技术&#xff0c;每个部分称为一个分区。分区可以提高数据的管理和查询效率&#xff0c;因为可以根据不同的条件对不同的分区进行操作&#x…...

Windows下安装Sqoop

Windows下安装Sqoop 一、Sqoop简介二、Sqoop安装2.1、Sqoop官网下载2.2、Sqoop网盘下载2.3、Sqoop安装&#xff08;以version&#xff1a;1.4.7为例&#xff09;2.3.1、解压安装包到 D:\bigdata\sqoop\1.4.7 目录2.3.2、新增环境变量 SQOOP_HOME2.3.3、环境变量 Path 添加 %SQO…...

Chrome 谷歌浏览器,自动填充密码,提示需要输入电脑开机密码问题

我们在使用浏览器访问各个网站时&#xff0c;经常会保存密码。在下一次访问时&#xff0c;直接使用保存的密码填充&#xff0c;简单方便。 但是突然有一天&#xff08;怀疑是谷歌浏览器更新导致的&#xff09;&#xff0c;每次使用密码填充时&#xff0c;都有如下拦截 拦截提…...

Java技术整理(3)—— 多线程并发篇

1、Java 线程实现/创建方式 &#xff08;1&#xff09;继承Thread类 Thread类本质上是实现了Runnable接口的实例&#xff0c;代表一个线程的实例&#xff0c;通过start()启动&#xff0c;自动执行run()方法。 &#xff08;2&#xff09;实现Runnable接口 Runnable是一个没有…...

2023热门跨境电商平台哪个入驻条件适合新手?

一、 Shopee 1.平台简介&#xff1a;东南亚最大跨境电商平台&#xff0c;覆盖新加坡、马来西亚、菲律宾、泰国、越南、巴西等十余个市场。 2.平台优势&#xff1a;流量大、物流快、东南亚市场前景好 3.入驻要求&#xff1a;企业或个体营业执照其他电商平台经验 4.平台费用&…...

【MFC】05.MFC第一大机制:程序启动机制-笔记

MFC程序开发所谓是非常简单&#xff0c;但是对于我们逆向人员来说&#xff0c;如果想要逆向MFC程序&#xff0c;那么我们就必须了解它背后的机制&#xff0c;这样我们才能够清晰地逆向出MFC程序&#xff0c;今天这篇文章就来带领大家了解MFC的第一大机制&#xff1a;程序启动机…...

小程序动画 animation 的常规使用

公司小程序项目比较多&#xff0c;最近正好有时间看一下小程序的动画&#xff0c;同时记录一下我的学习过程&#xff1b;看到这个文章的&#xff0c;我建议你之间去小程序后台&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/wx.createAnimati…...

Swift 周报 第三十四期

文章目录 前言新闻和社区iPhone Pro 要提价&#xff01;新款 iPhone 或会使用 USB-C 充电器&#xff0c;边框更薄与 App Store 专家会面交流让你的 App 和游戏在 visionOS 模拟器外更进一步 提案通过的提案正在审查的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swif…...

[虚幻引擎] UE DTBase64 插件说明 使用蓝图对字符串或文件进行Base64加密解密

本插件可以在虚幻引擎中使用蓝图对字符串&#xff0c;字节数组&#xff0c;文件进行Base64的加密和解密。 目录 1. 节点说明 String To Base64 Base64 To String Binary To Base64 Base64 To Binary File To Base64 Base64 To File 2. 案例演示 3. 插件下载 1. 节点说…...

无需配置环境!MinerU镜像一键部署,即刻体验智能文档解析

无需配置环境&#xff01;MinerU镜像一键部署&#xff0c;即刻体验智能文档解析 1. 为什么选择智能文档解析&#xff1f; 在日常办公和学习中&#xff0c;我们经常需要处理各种文档资料&#xff1a;PDF报告、扫描合同、学术论文、财务报表等。传统方式要么需要手动输入&#…...

如何让Windows高效识别苹果设备?极简驱动安装工具3分钟解决连接难题

如何让Windows高效识别苹果设备&#xff1f;极简驱动安装工具3分钟解决连接难题 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitco…...

ofa_image-caption_coco_distilled_en快速部署教程:7860端口WebUI调用全流程详解

ofa_image-caption_coco_distilled_en快速部署教程&#xff1a;7860端口WebUI调用全流程详解 本文介绍如何快速部署和使用ofa_image-caption_coco_distilled_en模型&#xff0c;这是一个专门用于为图片生成英文描述的AI系统。通过简单的Web界面&#xff0c;任何人都能轻松上传图…...

Qwen2-VL-2B-Instruct实战教程:Text-Text语义距离计算在合同比对中的应用

Qwen2-VL-2B-Instruct实战教程&#xff1a;Text-Text语义距离计算在合同比对中的应用 1. 引言&#xff1a;当合同审查遇上AI语义理解 想象一下这个场景&#xff1a;你手头有两份合同&#xff0c;一份是标准模板&#xff0c;另一份是客户发来的修改版。你需要快速找出两份合同…...

Neo.mjs性能优化:如何实现每秒40,000+增量更新的秘密

Neo.mjs性能优化&#xff1a;如何实现每秒40,000增量更新的秘密 【免费下载链接】neo The application worker driven frontend framework 项目地址: https://gitcode.com/gh_mirrors/neo/neo Neo.mjs作为一款由应用工作器驱动的前端框架&#xff0c;以其卓越的性能表现…...

单片机:从核心原理到智能应用实战

1. 单片机&#xff1a;智能时代的微型大脑 想象一下清晨醒来&#xff0c;窗帘自动拉开&#xff0c;咖啡机开始工作&#xff0c;室内温度始终保持在最舒适的状态——这些看似简单的智能场景背后&#xff0c;都藏着一个不起眼却至关重要的核心部件&#xff1a;单片机。这块比硬币…...

终极小说下载器:一键保存全网小说,打造你的私人数字图书馆

终极小说下载器&#xff1a;一键保存全网小说&#xff0c;打造你的私人数字图书馆 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 你是否遇到过这样的情况&#xff1a;追更的小说突然…...

数字图像处理核心算法手撕实现 (一)

1. 数字图像处理基础概念 数字图像处理就像给照片做美容手术&#xff0c;只不过操作对象是像素矩阵。我第一次接触这个概念是在大学实验室&#xff0c;当时对着一个512x512的灰度图矩阵发呆了半小时&#xff0c;才明白那些0-255的数字代表着什么。 空间分辨率相当于照片的&qu…...

突破语音转换技术瓶颈:Retrieval-based Voice Conversion全平台实战指南

突破语音转换技术瓶颈&#xff1a;Retrieval-based Voice Conversion全平台实战指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-ba…...

Windows更新修复完全指南:从诊断到解决的系统更新问题处理方案

Windows更新修复完全指南&#xff1a;从诊断到解决的系统更新问题处理方案 【免费下载链接】Reset-Windows-Update-Tool Troubleshooting Tool with Windows Updates (Developed in Dev-C). 项目地址: https://gitcode.com/gh_mirrors/re/Reset-Windows-Update-Tool Win…...