【C】递归实现字符串的逆序_递归实现字符串的逆序存储-程序员宅基地

技术标签: c语言  

题目:编写一个函数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;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_54717101/article/details/119113514

智能推荐

js的常见写法技巧-程序员宅基地

文章浏览阅读104次。Javascript练习题正则表达式验证邮箱摘要: View Code <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3..._js 写法技巧

vnc远程连接ubuntu,vnc远程连接ubuntu教程图解_vncuxq-程序员宅基地

文章浏览阅读1.1k次。Ubuntu Linux是由南非人马克·沙特尔沃思(Mark Shuttleworth)创办的基于Debian Linux的操作系统,Ubuntu几乎包含了所有常用的应用软件:文字处理、电子邮件、软件开发工具和Web服务等。用户下载、使用、分享Ubuntu系统,以及获得技术支持与服务,无需支付任何许可费用。那如何实现vnc远程连接ubuntu呢?如图:(官网:IIS7服务器管理工具)IIS7服务器管理工具能实现一键导出或导入,一键批量打开VNC,一键批量关闭VNC,服务器到期提醒,支持多台V_vncuxq

windows上搭建NFS服务器--haneWIN,Linux客户端挂载_hanewin 1.1.69-程序员宅基地

文章浏览阅读2w次。在进行嵌入式开发时常常需要在板子上用nfs挂载宿电脑,公司现在的架构是远程服务器加windows个人电脑,因此需要在个人电脑的windows系统上搭建NFS服务器。一、windows上搭建NFS服务器NFS服务器软件:haneWIN 1.1.69 汉化已注册的版本互联网上有下载,我这里再放一个我上传到CSDN的链接。https://download.csdn.net/download/z..._hanewin 1.1.69

Flutter 数据存储--shared_preferences使用详情-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏17次。shared_preferences,Flutter中数据本地存储_shared_preferences

QML----StackView动画_qml stackview动画-程序员宅基地

文章浏览阅读1.7k次。废话不多说,直接上代码(这里是渐入溅出)StackView{ objectName: "rootStack" id:stackView initialItem: spalsh anchors.fill: parent replaceEnter: Transition { PropertyAnimation { target: stackView property: ..._qml stackview动画

[文摘20071020]富人和穷人的经典差异 -程序员宅基地

文章浏览阅读307次。1.自我认知    穷人: 很少想到如何去赚钱和如何才能赚到钱, 认为自己一辈子就该这样,不相信会有什么改变。   富人: 骨子里就深信自己生下来不是要做穷人,而是要做富人, 他有强烈的赚钱意识,这已是他血液里的东西, 他会想尽一切办法使自己致富。 2.休闲   穷人:

随便推点

Cisco技术区常用配置实例整理----2010.11.1更新ing....-程序员宅基地

文章浏览阅读470次。网络地址转换(NAT)互联网如火如荼的应用,加剧了IP地址匮乏的问题,为了缓解这一问题,一个重要的应用:NAT(Network Address Translation―网络地址转换),日益广泛地应用起来。NAT通过地址转换的方式,使企业可以仅使用较少的互联网有效IP地址,就能获得互联网接入的能力,有效地缓解了地址不足的问题,同时提供了一定的安全性。 NAT的实..._rsa-encr和rsa-sig的区别

Linux grep命令详解-程序员宅基地

文章浏览阅读842次,点赞8次,收藏21次。Java架构进阶面试及知识点文档笔记这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理Java分布式高级面试问题解析文档其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!互联网Java程序员面试必备问题解析及文档学习笔记Java架构进阶视频解析合集《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》

贪心算法解决汽车加油问题_实验3.3 汽车加油问题 1、问题描述:一辆汽车加满油后可行驶nkm。旅途中有若干加油-程序员宅基地

文章浏览阅读1w次,点赞7次,收藏40次。问题描述:一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n 在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n 要求:输入:第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1 个整数,表示第k个加油站与第k-1 个加油站之间的距_实验3.3 汽车加油问题 1、问题描述:一辆汽车加满油后可行驶nkm。旅途中有若干加油

windows下使用makefile编译C语言.doc_windows编译c文件make-程序员宅基地

文章浏览阅读1.5w次。1. 准备工作:程序:MinGW-3.1.0-1.exe windows下的gcc,编译c语言的工具下载地址: http://umn.dl.sourceforge.net/sourceforge/mingw/MinGW-3.1.0-1.exe make 按照makefile规则编译程序的工具位置 :w_windows编译c文件make

moviepy音视频剪辑:与大小相关的视频变换函数详解_moviepy 抖音视频大小-程序员宅基地

文章浏览阅读2.2k次。一、引言在《moviepy音视频剪辑:moviepy中的剪辑基类Clip详解》介绍了剪辑基类的fl、fl_time、fx方法,在《moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解》介绍了fl_image和subfx方法,在《Python+moviepy音视频剪辑:视频帧数据的本质、Clip的fl方法进行变换处理的原理以及滚屏案例》及《moviepy音视频剪辑:使用fl_time进行诸如快播、慢播、倒序播放等时间特效处理的原理和可能遇到的坑》分别介绍了fl和fl_time进行视频剪_moviepy 抖音视频大小

JAVA基础知识点总结-程序员宅基地

文章浏览阅读1.4w次,点赞28次,收藏278次。Java 是一门面向对象的编程语言。语言特点:面向对象,平台无关性,支持多线程,编译与解释并存JVM:Java Virtual Machine,Java 虚拟机。JRE: Java 运⾏时环境。JDK: Java Development Kit,它是功能⻬全的 Java SDK。JDK 包含 JRE,JRE 包含 JVM。Java 程序从源代码到运行主要有三步:编译:将我们的代码(.java)编译成虚拟机可以识别理解的字节码(.class)解释:虚拟机执行 Java 字节码,将字节码翻译成机器能_java基础知识点