【C】递归实现字符串的逆序

2023-11-03

题目:编写一个函数reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。

实现思想

要实现字符逆序我们先将最后一个字符与第一个字符互换位置,然后逐个向里互换。例如将‘abcde’变成‘edcba’。

1.首先,我们要知道字符串的长度,这样才能知道最后一位字符的下标(即字符串长度减一)。

 2.定义len获得字符串的长度,定义变量tmp用来存放第一个字符,再把空出来的第一个位置放最后一个字符,因为是递归思想,所以不能前后直接交换,此时需将空出来的最后一个字符位置放'\0'

3.此时,需要找到递归的限制条件(出口),只需要知道余下的字符串是否有两个字符,调用my_strlen函数,此时从字符串的第二个字符开始计算长度判断是否满足出口条件,接着第二个字符调用reverse_string(),直到只剩下一个或者没有字符的时候将最后一个字符位置放存第一个字符的tmp

代码实现:

 

 

全部代码:

#include<stdio.h>
int my_strlen(char* str)
{
    int count = 0;
    while (*str != '\0')
    {
        count++;
        str++;
    }
    return count;
}


void reverse_string(char* str)
{
    int len = my_strlen(str);
    char tmp = *str;//首字符
    *str = str[len - 1];//尾字符
     str[len-1]= '\0';
     if (my_strlen(str + 1) >= 2)
         reverse_string(str+1);
     str[len - 1] = tmp;
}
int main()
{
    char str[] = "abcde";
    reverse_string(str);
    printf("%s", str);
    
    return 0;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C】递归实现字符串的逆序 的相关文章

  • 华为OD机试真题-快递员的烦恼-2023年OD统一考试(C卷)

    题目描述 快递公司每日早晨 给每位快递员推送需要送到客户手中的快递以及路线信息 快递员自己又查找了一些客户与客户之间的路线距离信息 请你依据这些信息 给快递员设计一条最短路径 告诉他最短路径的距离 注意 1 不限制快递包裹送到客户手中的顺序
  • C/C++查找算法-----------------------二分查找详解

    二分查找 定义 实例 定义 二分查找也称折半查找 搜索过程从数组的中间元素开始 如果中间元素正好是要查找的元素 则搜索过程结束 如果某一特定元素大于或者小于中间元素 则在数组大于或小于中间元素的那一半中查找 而且跟开始一样从中间元素开始比较
  • 华为OD机试真题-文本统计分析-2023年OD统一考试(C卷)

    题目描述 有一个文件 包含以一定规则写作的文本 请统计文件中包含的文本数量 规则如下 1 文本以 分隔 最后一条可以没有 但空文本不能算语句 比如 COMMAND A 只能算一条语句 注意 无字符 空白字符 制表符都算作 空 文本 2 文本
  • 华为OD机试真题-求幸存数之和-2023年OD统一考试(C卷)

    题目描述 给一个正整数列 nums 一个跳数 jump 及幸存数量 left 运算过程为 从索引为0的位置开始向后跳 中间跳过 J 个数字 命中索引为J 1的数字 该数被敲出 并从该点起跳 以此类推 直到幸存left个数为止 然后返回幸存数
  • 特殊类设计

    1 请设计一个类 不能被拷贝 拷贝只会放生在两个场景中 拷贝构造函数 和 赋值运算符重载 c 98 将拷贝构造函数与赋值运算符重载 只声明不定义 并且将其访问权限设置为私有 即可 class Copyban Copyban const Co
  • 华为OD机试真题-密码解密-2023年OD统一考试(C卷)

    题目描述 给定一段 密文 字符串s 其中字符都是经过 密码本 映射的 现需要将 密文 解密并且输出 映射的规则 a i 分别用 1 9 表示 j z 分别用 10 26 表示 约束 映射始终唯一 输入描述 密文 字符串 输出描述 明文字符串
  • 华为OD机试真题-求字符串中所有整数的最小和-2023年OD统一考试(C卷)

    题目描述 输入字符串s 输出s中包含所有整数的最小和 说明 1 字符串s 只包含 a z A Z 2 合法的整数包括 1 正整数 一个或者多个0 9组成 如 0 2 3 002 102 2 负整数 负号 开头 数字部分由一个或者多个0 9组
  • 华为OD机试真题-查找一个有向网络的头节点和尾节点-2023年OD统一考试(C卷)

    题目描述 给定一个有向图 图中可能包含有环 图使用二维矩阵表示 每一行的第一列表示起始节点 第二列表示终止节点 如 0 1 表示从0到1的路径 每个节点用正整数表示 求这个数据的首节点与尾节点 题目给的用例会是一个首节点 但可能存在多个尾节
  • 华为OD机试真题-分配土地-2023年OD统一考试(C卷)

    题目描述 从前有个村庄 村民们喜欢在各种田地上插上小旗子 旗子上标识了各种不同的数字 某天集体村民决定将覆盖相同数字的最小矩阵形的土地的分配给为村里做出巨大贡献的村民 请问 此次分配土地 做出贡献的村民中最大会分配多大面积 输入描述 第一行
  • Programming Abstractions in C阅读笔记:p235-p241

    Programming Abstractions in C 学习第66天 p235 p241总结 一 技术总结 1 backtracking algorithm 回溯算法 1 定义 p236 For many real world prob
  • [补题记录] Educational Codeforces Round 160 (Rated for Div. 2)(A~C)

    URL https codeforces com contest 1913 problem D 目录 A Problem 题意 Thought 思路 Code 代码 B Problem 题意 Thought 思路 Code 代码 C Pro
  • 讲解darknet: ./src/cuda.c:36: check_error: Assertion `0‘ failed.

    目录 讲解darknet src cuda c 36 check error Assertion 0 failed 错误原因 解决方案 1 检查CUDA安装 2 检查GPU驱动程序 3 检查CUDA环境变量 4 编译darknet 5 调试
  • C/C++编程:令人印象深刻的高级技巧案例

    C C 编程语言在软件开发领域有着悠久的历史 由于其高效 灵活和底层访问能力 至今仍然被广泛应用 本文将介绍一些在C C 编程中令人印象深刻的高级技巧 帮助读者提升编程水平 更加高效地使用这两种强大的编程语言 一 指针运算与内存管理 C C
  • VScode配置mingw C语言环境变量

    C语言IDE VScode VScode是个人比较喜欢的一款IDE软件 鄙人曾同时在VScode软件中运行三个终端 开发Python Golang和C语言 下载地址如下 code visualstudio com VScode配置mingw
  • C语言—每日选择题—Day54

    第一题 1 存在int类型变量x y z 其对应值为x 0x59 y 0x39 z 0x6E 则x y z的值为 A 1 0010 0111 0011 B 1 0100 0011 1111 C 1 0010 0111 0111 D 1 01
  • 串口流控(CTS/RTS)使用详解

    1 流控概念 在两个设备正常通信时 由于处理速度不同 就存在这样一个问题 有的快 有的慢 在某些情况下 就可能导致丢失数据的情况 如台式机与单片机之间的通讯 接收端数据缓冲区已满 则此时继续发送来的数据就会丢失 流控制能解决这个问题 当接收
  • BMS开发之面向对象思想(adbms1818)

    借鉴adbms1818的底层驱动代码 前言 adbms1818的主要用途就是不同种类的寄存器里面存储不同的数据 程序员需要通过特定的协议往寄存器里面写入或者读出数据 1 定义一个结构体 里面存储了adbms1818的所有寄存器的信息 然后我
  • 【C++项目】【报错】[错误] new: No such file or directory, compilation terminated【及解决方法】

    一 问题描述 C源代码文件在编译过程中报错 错误 new No such file or directory compilation terminated 代码如下 include
  • 牛客字符串

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • c语言学生管理系统

    创建结构体里面包含学生的各种信息 struct xs int xh char xm 20 int gs yy wl double pj struct xs next 创建菜单 void menu printf n n printf 学生管理

随机推荐

  • Binutils-2.23.2

    http lamp linux gov cn Linux LFS 6 2 chapter06 binutils html http davidgao github io LFSCN chapter06 binutils html Linux
  • Linux命令56问

    目录 2 查看CPU性能的指令 vmstat 3 查看内存使用情况的指令 free 4 查看硬盘使用情况的指令 df 5 查看网络IO情况的指令 ifstat 6 查看机器已建立的TCP连接的指令 Linux常用命令 8 cd命令的作用 9
  • 1-Kubernetes基础入门体系架构学习(一)

    0x00 基础简述 Borg 系统 Kubernetes 系统 1 发展经历 2 简要介绍 3 系统架构 0x01 组件详述 1 Kubernetes Master 2 Kubernetes Node 3 Kubernetes 插件 4 小
  • 【计算机网络】湖科大微课堂笔记 p64-66 TCP的运输连接管理:TCP的连接建立与释放、TCP报文段的首部格式

    文章目录 TCP的运输连接管理 TCP的连接建立 小结 一些例题 TCP的运输连接管理 TCP的连接释放 TCP报文段的首部格式 小结 TCP的运输连接管理 TCP的连接建立 TCP的连接建立要解决以下三个问题 TCP使用 三报文握手 建立
  • Flutter 沉浸式状态栏 安全区域 SafeArea以外的刘海屏 设置颜色

    白色 黑 import dart io import package flutter services dart void main runApp MyApp 白色 if Platform isAndroid 以下两行 设置android状
  • OSPF域内路由

    划分区域之后有什么好处呢 OSPF域内路由 属于同一个区域内的路由 OSPF划分区域的要求 基于链路 一个链路肯定是属于一个区域的 Router LSA 类LSA Network LSA 类LSA 区域内部都会有 类LSA和 类LSA 拓扑
  • 下载IDEA-2020.1

    文章目录 一 下载IDEA 2020 1 一 下载老师发的IDEA 2020 1安装包 二 在百度上搜索官网进行下载 1 网址 https www jetbrains com idea 2 单击 Download 二 安装IDEA 2020
  • 图片变成黑白

    实例
  • 小程序开发环境搭建

    工具下载 下载 访问https mp weixin qq com 进入 小程序界面 点击文档 进入小程序文件界面 如果要开发小程序可按照文档指示注册开发账号 在文档目录中找到安装开发工具 前往开发者工具下载界面即可下载开发工具 选择对应版本
  • nginx+upsync+consul实现动态的负载均衡

    1 什么是动态负载均衡 传统的负载均衡 如果Upstream参数发生变化 每次都需要重新加载nginx conf文件 因此扩展性不是很高 所以我们可以采用动态负载均衡 实现Upstream可配置化 动态化 无需人工重新加载nginx con
  • android软件静态分析系统的设计与实现,基于静态分析的安卓自动化测试优化设计与实现...

    摘要 随着移动互联网的飞速发展 智能手机软件迅速地融入了人们生活的各个方面 而作为智能手机市场中占额超过80 的Android操作系统 在设备数量和应用软件数量上都在快速地增长 为了保证Android应用软件功能的正确性和可靠性 需要对其进
  • sqlserver日期函数大全

    一般存入数据库中的时间格式为yyyy mm ddhh mm ss 如果要转换为yyyy mm dd 的日期格式 可以使用convert函数 下面是sqlserver帮助中关于convert函数的声明 CONVERT data type le
  • win10 远程桌面服务不见了解决办法

    由于员工操作错误 导致某杀毒软件把remote desktop services服务整个搞不见了 其他服务什么的都在 应该开的都开了 查了N多网上CTRL V后 发现注册表中termservice消失了 然后把其他版本相同的win10的te
  • 【微信篇】取证遇到微信昵称、微信号、微信账号、微信ID一次性区分清楚

    微信篇 取证遇到微信昵称 微信号 微信账号 微信ID一次性区分清楚 区别于 看得见 看不见 之间 suy 文章目录 微信篇 取证遇到微信昵称 微信号 微信账号 微信ID一次性区分清楚 一 微信账号 ID 永久唯一性 二 微信号 短期唯一性
  • 微信小程序-分享页面到微信群或者好友携带分享者身份信息

    原文链接 http www smallerpig com 1202 html utm source tuicool utm medium referral 当用户在群聊中点击小程序的分享卡片 开发者可获取群 ID 和群名称 更好地针对群场景
  • Kafka三款监控工具比较

    Kafka三款监控工具比较 转 在之前的博客中 介绍了Kafka Web Console这 个监控工具 在生产环境中使用 运行一段时间后 发现该工具会和Kafka生产者 消费者 ZooKeeper建立大量连接 从而导致网络阻塞 并且这个 B
  • Unreal Engine 4.20 Release Notes

    https docs unrealengine com en US Builds 4 20 Unreal Engine 4 20 Release Notes What s New Unreal Engine 4 20 delivers on
  • c++学习,引用-- 黑马笔记

    1 引用的基本使用 作用 给变量起别名 语法 数据类型 别名 原名 注意事项 引用必须初始化 引用初始化之后不可以改变 样例 include
  • Python初体验(2)-java与python的差异(面向对象)

    一 类class 在python中所有类也都是默认继承自一个最终基类object 1 构造函数 成员函数 成员变量 局部变量 这几个概念在java中有 在python中也是类似的逻辑 构造函数的函数名是固定的 init 所有成员变量都写在这
  • 【C】递归实现字符串的逆序

    题目 编写一个函数reverse string char string 递归实现 实现 将参数字符串中的字符反向排列 要求 不能使用C函数库中的字符串操作函数 实现思想 要实现字符逆序我们先将最后一个字符与第一个字符互换位置 然后逐个向里互