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

【C语言习题】26.字符逆序

文章目录

    • 1.描述
    • 2.解题思路
    • 3.具体代码


1.描述

  • 输入描述:

将一个字符串str的内容颠倒过来,并输出。可以有空格

数据范围:1≤𝑙𝑒𝑛(𝑠𝑡𝑟)≤10000 1≤len(str)≤10000

  • 输出描述:

输出逆序的字符串

  • 示例图:

在这里插入图片描述


2.解题思路

首先,我们需要一个接收函数用来接收字符串,这里的字符串应该用字符数组存储。

逆序输出,就是将数组元素倒过来输出。

我们可以直接通过逆序的数组下标,输出逆序字符串。

也可以将数组下标元素逆序交换,输出逆序字符串。


3.具体代码

我找到了两个方法:

代码1:

#include <stdio.h>
#include <string.h>
int main()
{int i;char s[10000];gets(s);for(i=strlen(s)-1;i>=0;i--){	putchar(s[i]);}return 0;
}

打印:

在这里插入图片描述

代码讲解:

  1. 定义整型变量i和字符数组s。
  2. 通过gets(s)来接收输入的语句,直到遇到换行符。
  3. 通过一个for循环来逆序打印输入的语句。

代码2:

这个代码看起来复杂点。

void Reverse(char* str)
{char* left = str;// 定义左指针left,初始指向字符串的起始位置char* right = str + strlen(str)-1;// 定义右指针right,初始指向字符串的最后一个字符位置while(left < right)// 当左指针小于右指针时,执行循环体{char temp = *left;// 临时保存左指针指向的字符*left = *right; // 将右指针指向的字符赋值给左指针指向的位置*right = temp; // 将临时保存的左指针字符赋值给右指针指向的位++left;// 左指针向后移动一位--right;// 右指针向前移动一位}
}int main()
{char str[10000] = {0};while(gets(str)){Reverse(str);printf("%s\n", str);memset(str, 0, sizeof(str)/sizeof(str[0]));}return 0;
}

打印:

在这里插入图片描述

代码讲解:

  1. 进入main函数,先定义一个字符数组str。

  2. 进入while循环,通过gets(str)读取用户输入,直到遇到换行符。

  3. 将字符数组arr首元素地址传递给Reverse()函数。

  4. 进入Reverse()函数,定义左指针left,初始指向字符串的起始位置

  5. 定义右指针right,初始指向字符串的最后一个字符位置

  6. 进入while循环,当左指针小于右指针时,执行循环体

  7. char temp = *left;// 临时保存左指针指向的字符
    *left = *right; // 将右指针指向的字符赋值给左指针指向的位置
    *right = temp; // 将临时保存的左指针字符赋值给右指针指向的位
    ++left;// 左指针向后移动一位
    --right;// 右指针向前移动一位
    

    简单来说,就是把最左边和最右边的元素位置互换。

  8. Reverse()函数执行完后,返回main函数,打印arr数组的内容

  9. 使用memset函数将str数组清零,为下一次读取做准备。

  10. 程序会一直循环,知道用户不输入为止。
    简单来说,就是把最左边和最右边的元素位置互换。

  11. Reverse()函数执行完后,返回main函数,打印arr数组的内容

  12. 使用memset函数将str数组清零,为下一次读取做准备。

  13. 程序会一直循环,知道用户不输入为止。

相关文章:

【C语言习题】26.字符逆序

文章目录 1.描述2.解题思路3.具体代码 1.描述 输入描述: 将一个字符串str的内容颠倒过来&#xff0c;并输出。可以有空格 数据范围&#xff1a;1≤&#x1d459;&#x1d452;&#x1d45b;(&#x1d460;&#x1d461;&#x1d45f;)≤10000 1≤len(str)≤10000 输出描述&…...

windows和linux下的库文件比较

在Windows和Linux操作系统中&#xff0c;库文件&#xff08;lib、dll、.a、.so&#xff09;都扮演着重要的角色&#xff0c;但它们之间存在一些关键的区别。以下是这些库文件之间的主要差异&#xff1a; Windows lib 静态链接库&#xff08;Static Link Library&#xff09;…...

第七十九节 Java面向对象设计 - Java访问级别

Java面向对象设计 - Java访问级别 类简单名称是 class 关键字和 {)之间的名称。 当我们通过简单的名称引用一个类时&#xff0c;编译器在引用类所在的同一个包中查找该类声明。 我们可以使用全名来引用一个类如下。 com.w3cschool.Dog aDog;指定类的访问级别的一般语法是 &…...

Vue进阶之Vue项目实战(四)

Vue项目实战 出码功能知识介绍渲染器性能调优使用 vue devtools 进行分析使用“渲染”进行分析判断打包构建的产物是否符合预期安装插件使用位置使用过程使用lighthouse分析页面加载情况使用performance分析页面加载情况应用自动化部署与发布CI/CD常见的CI/CD服务出码功能 出码…...

fix leakage脚本

芯片的PPA追求是无止境的&#xff0c;因而在修时序的过程中我们需要对设计修复leakage&#xff0c;降低芯片的静态功耗。 以下分享一个典型的leakage脚本 set design 1 set version "V1" set date [exec date %m%d%H%M] set working_directory ${design}_${version}…...

MySQL中视图是什么,有什么作用

目录 一、视图的简介 1.1 什么是视图&#xff1f; 1.2 为什么使用视图&#xff1f; 1.3 视图有哪些规则与限制&#xff1f; 1.4 视图能否更新&#xff1f; 二、视图的创建 三、视图的作用 3.1 用视图简化复杂的联结 3.2 用视图格式化检索出的数据 3.3 用视图过滤数据…...

【面试题】JavaScript基础高频面试(下)

10、Javascript 闭包是什么,闭包形成的原因和闭包的用途 &#xff1f; 闭包&#xff08;Closure&#xff09;是 JavaScript 中的一个非常重要的概念。简单地说&#xff0c;闭包就是一个函数能够访问另一个函数的作用域。这是因为在 JavaScript 中&#xff0c;函数是一等公民&a…...

对于个人而言,大数据时代如何更好地管理自己的信息?

在大数据时代&#xff0c;管理个人信息变得尤为重要。以下是几个建议来更好地管理个人信息&#xff1a; 认识和了解自己的数字足迹&#xff1a;了解自己在互联网上的活动&#xff0c;包括浏览历史、社交媒体和在线购物数据等。通过查阅自己的帐户设置和隐私选项&#xff0c;可以…...

oj项目后端分析

1.菜单管理 我们菜单管理有菜单表(sys_menu)&#xff0c;还有用户角色表&#xff08;sys_role&#xff09;&#xff0c;菜单表是用于管理我们用户所拥有的权限&#xff0c;不同的用户所看到的页面是不一样的&#xff0c;由于一些用户他能够看到题库管理和考题管理&#xff0c;还…...

书籍学习|基于SprinBoot+vue的书籍学习平台(源码+数据库+文档)

书籍学习平台 目录 基于SprinBootvue的书籍学习平台 一、前言 二、系统设计 三、系统功能设计 1平台功能模块 2后台功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 5.2.3作者功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 …...

AI学习指南数学工具篇-MATLAB中的凸优化工具

AI学习指南数学工具篇-MATLAB中的凸优化工具 在人工智能领域&#xff0c;凸优化是一个非常重要的数学工具&#xff0c;它在机器学习、深度学习、数据分析等领域都有着广泛的应用。而MATLAB作为一款强大的数学工具软件&#xff0c;提供了丰富的凸优化工具和函数&#xff0c;为用…...

散户如何参与期权交易?

期权就是股票&#xff0c;唯一区别标的物上证指数&#xff0c;会看大盘吧&#xff0c;期权交易两个方向认购做多&#xff0c;认沽做空&#xff0c;双向t0交易没了&#xff0c;期权交易跟期货一样&#xff0c;对的&#xff0c;玩的也是合约&#xff0c;唯一区别没有保证金不会爆…...

Unity Apple Vision Pro 开发(一):开发前期准备【软硬件要求 | 开发者模式 | 无线调试打包】

文章目录 &#x1f4d5;教程说明&#x1f4d5;硬件要求&#x1f4d5;软件要求⭐Xcode 15.2 及以上⭐visionOS 1.0 (21N301) SDK 或者更高版本⭐Unity 2022 LTS for Apple Silicon (2022.3.18f1及以上的版本)⭐Unity Pro/Unity Enterprise/Unity Industry的授权许可证 &#x1f…...

IGMP——组播成员端网络协议

目录 一.IGMP基本概念 &#xff08;1&#xff09;组播转发困境 &#xff08;2&#xff09;感知组播成员方式 &#xff08;3&#xff09;IGMP版本 二.IGMP各版本的区别与联系 &#xff08;1&#xff09;IGMPV1 1.普遍组查询报文 2.成员关系报告报文 3.IGMPV1报文格式 4…...

Java break细节(标签)

Java break细节(标签)continue也可以使用标签 break是用来跳出循环的。 当有多重循环时&#xff0c;可以配合标签来使用&#xff0c;决定跳出那一重循环。 尽量不要使用标签 1、不代标签时&#xff0c;默认跳出 break 所在的那重循环&#xff1a; 可见在 i 3 时&#xff0…...

远程户外监控组网方案,工业4G路由器ZR2000

户外监控无人值守4G工业路由器组网应用涉及工业自动化、数据传输和远程监控的重要领域。在户外没有光纤的情况下&#xff0c;想要让监控或传感器等设备联网&#xff0c;仅需一台4G工业路由器即可解决。以下是关于远程监控户外组网的详细分析与应用&#xff1a; 物联网应用场景 …...

K8S集群中Yaml文件详解

目录 一、Yaml概述 二、Yaml基本语法 三、Yaml数据结构 四、K8S资源清单描述方法 五、api资源版本标签 六、Yaml文件示例详解 1.deployment.yaml文件详解 2.Pod yaml文件详解 3.Service yaml文件详解 七、Yaml文件相关操作 1.试运行 2.生成yaml格式 3.生成json格式…...

git-将老项目的分支推送到新项目的新分支上

1.克隆新项目&#xff1a;首先&#xff0c;将新项目的仓库克隆到本地。使用以下命令将新项目克隆到本地&#xff1a; git clone <新项目的仓库地址> 2.进入新项目目录&#xff1a;进入新项目的目录&#xff0c;使用以下命令&#xff1a; cd <新项目目录> 3.添加旧项…...

Unity之如何使用Localization来实现文本+资源多语言

前言 使用Unity实现本地化&#xff08;Localization&#xff09;功能 在当今的游戏开发中&#xff0c;支持多语言已成为一项基本需求。Unity作为主流的游戏开发引擎&#xff0c;提供了强大的本地化工具&#xff0c;使开发者能够方便地为游戏添加多语言支持。本文将介绍如何在U…...

ESP32 实时人脸检测系统:ESP32 与上位机通信(microPython框架)

实时人脸检测系统&#xff1a;ESP32 与上位机通信 在这篇博客中&#xff0c;我将介绍如何使用 ESP32 摄像头捕获图像&#xff0c;并通过 UDP 协议将图像传输到上位机进行实时人脸检测。我们将使用 Python 编程语言和 OpenCV 库来实现上位机端的人脸检测功能。 硬件与软件准备…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...