关于字符串逆序存储问题,本文主要介绍了两种方法:1.递归 2.非递归

递归:

  • 先利用my_strlen()函数求出所求字符串长度,字符串长度保存在变量len中(不含字符串'\0')(也可以直接使用库函数strlen(),使用时应注意,要包含头文件 #include<string.h> )
  • 编写逆序函数 nixu(char* arr,int len,int i)
  1. 创建字符变量tmp,从下标i=0开始,直到i=len/2-1,将字符arr[i]存储到每次调用nixu()函数开辟的存储空间tmp上;同时从下标len-1-i(即字符串除'\0'以外的最后一个字符串)开始,将每个字符arr[len-1-i]存储到对应的字符arr[i]中。
  2. 直到i=len/2-1时,每个nixu()函数中的tmp将赋值给该函数中的arr[len-1-i]。
  3. 当程序跳出所有的nixu()函数时,arr[]数组中存储的字符串即为最开始的字符串的逆序。

源代码:

#include<stdio.h>int my_strlen(char* arr)
{int len = 0;while (*arr != '\0'){len++;arr++;}return len;
}void nixu(char* arr, int len,int i)
{char tmp;tmp = arr[i];arr[i] = arr[len - 1 - i];if (i < len / 2){nixu(arr, len, i + 1);}arr[len - 1 - i] = tmp;
}int main()
{char arr[] = "sagfhjasggjawjka";int len = my_strlen(arr);int i = 0;nixu(arr, len, i);printf("%s\n", arr);return 0;
}

运行结果:

非递归:

  • 先利用strlen()函数求出所求字符串长度,字符串长度保存在变量len中(不含字符串'\0')
  • 编写非递归逆序函数 nixu(char* arr,int len)
  1. 从下标i=0开始,直到i=len/2-1,利用字符变量tmp,交换arr[i]和arr[len-1-i];
  2. 直到i=len/2时,字符串arr已完成逆序排序。

源代码:

#include<stdio.h>
#include<string.h>void nixu(char*, int);void nixu(char* arr, int len)
{char tmp;int i = 0;while (i < len / 2){tmp = arr[i];arr[i] = arr[len - 1 - i];arr[len - 1 - i] = tmp;i++;}}int main()
{char arr[] = "sagfhjasggjawjka";int len = strlen(arr);nixu(arr, len);printf("%s\n", arr);return 0;
}

运行结果:

这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位

C语言/关于字符串逆序存储相关推荐

  1. c语言对字符串逆序,【C语言】 字符串逆序

    [C语言] 字符串逆序 字符串逆序有多种办法,下面我们分方法而论: // 非递归实现字符串反转: char *reverse(char *str) { if( !str ) { return NULL ...

  2. 使用C语言实现字符串逆序操作

    这篇文章主要介绍了使用C语言实现字符串逆序操作案例,本文包含使用C语言的两种方法去实现,递归和非递归,以下就是详细内容,需要的朋友可以参考下 编写一个函数 reverse_string(char * ...

  3. C语言实现字符串逆序、倒置字符串(字符串逆序问题的升级)

    一.字符串逆序 问题描述: 输入一个字符串str,将其内容颠倒过来,并输出. 数据范围0<len(str)<10000 输入描述: 输入一个字符串,可以有空格 输出描述: 输出逆序的字符串 ...

  4. c语言指针字符串逆序存放,C语言指针实现字符串的反转

    题目要求: 编写程序:从键盘任意输入一个字符串,输出该字符串. 然后,将该字符串逆序存放后再输出,要求用字符指针完成. 代码: //解法一 #include #include int main() { ...

  5. c语言实现单链表逆序算法,C语言解字符串逆序和单向链表逆序问题的代码示例...

    字符串逆序上次面试碰到一个单向链表逆序的题目,幸好对字符串逆序比较熟悉,类比做出来了.字符串逆序比较简单,直接上代码: void stringReverse(char* p1,char* p2) { ...

  6. C语言实现——字符串逆序

    目录 前言 如何实现 代码实现 1.设立一个数组存放输入的字符串 2.将输入的字符串整体逆序 2.1 计算字符串长度 2.2 使用函数来实现倒置 2.3 实现函数reverse 3.将其中每个单词再进 ...

  7. c++语言将字符串逆序输出,C++实现字符串删除字符后逆序输出

    本文实例为大家分享了C++实现字符串删除字符后逆序输出的具体代码,供大家参考,具体内容如下 输入若干个字符串,和一个英文字符ch. 要求删除每个字符串中的字符ch(区分大小写),得到新的字符串,然后将 ...

  8. 【c语言】字符串逆序

    输入一个字符串,长度在100以内,按相反次序输出其中的所有字符. 样例输入 tsinghua 样例输出 auhgnist #include <stdio.h> #include <s ...

  9. 2019递归实现字符串的逆序存储(C++)

    描述 写一个递归算法来实现字符串的逆序存储,要求空间复杂度为O(1). 输入 多组数据,每组数据有一行,为要求逆序存储的字符串.当输入字符串为"0"时,输入结束. 输出 对于每组数 ...

最新文章

  1. 转载:CSS hack技巧大全
  2. 深度学习问题解决:Check failed: stream-parent()-GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogra
  3. easyui-window 关闭事件,只要关闭窗口就会触发
  4. java交换integer_Java比较和交换语义和性能
  5. 阅读笔记 1 火球 UML大战需求分析
  6. php 判断当前栏目高亮,Phpcms V9采用if语句判断当前栏目高亮、判断分类信息是否过期...
  7. 一级计算机考试修改信息书面申请表,医院信息科修改数据库申请单.doc
  8. ARGMAX(以及ARGMIN)的意思
  9. hive case when语法_SQL中CASE表达式的妙用
  10. OpenShift 4 - Knative教程 (3) 了解Knative Serving的核心对象
  11. 助您写出优雅的Java代码七点建议
  12. 〖Python APP 自动化测试实战篇④〗- 通过 appium 驱动夜神模拟器完成第一个自动化脚本 - 查看通讯录
  13. system libzip must be upgraded to version >= 0.11
  14. mac原生壁纸,拿走不谢!
  15. Making Startup Magic
  16. android 手机存储大小设置,如何让手机内存变大?内存不足解决方法【详解】
  17. 图片怎么转换成pdf格式?这几个方法帮你一键转换
  18. 10行代码实现微信群消息同步(wxpy)
  19. mi4a android tv,小米电视4A精简系统教程
  20. 科罗拉多矿业大学计算机科学专业,科罗拉多矿业大学专业设置情况_有哪些专业...

热门文章

  1. 161206 ANFIS 自适应模糊神经网络
  2. android mac 照片恢复,删掉的照片怎么恢复?找回攻略用起来!
  3. SIGSEGV (0xb) at pc=0x0000000400000000, pid=14750, tid=140204925077248 问题排查
  4. 常见的嵌入式端流媒体服务器开源项目!
  5. erp系统用到哪些java技术,看完这篇彻底明白了
  6. 现代信号处理——高阶统计分析(非高斯信号与线性系统)
  7. ASP.NET与SEO - 认清你手中的HTML标签
  8. debian 图形界面安装及无线网卡驱动 Broadcom BCMXX系列
  9. 最有效的方法来增加在Map中的值
  10. 深度突变扫描的步骤:可用于文库构建、功能筛选和高通量测序