要想让输入的字符串倒序输出有很多种方法,我们可以用字符串处理函数,也可以将字符数组内的元素进行交换,在这里,我们用递归的方式来封装一个可以将字符串倒序输出的函数。

首先我们知道,递归程序层层递归,在递归之后的程序一定是最后才执行的,既然我们要倒序打印字符串,第一个字符一定是最后才打印的,然而很巧的是,我们这个倒序输出函数传址传的也是第一个字符的地址,所以我们就可以写成

void reverse_string(char* string)
{reverse_string(string+1); printf("%c",*string);
}

但是递归是需要条件的,若没有条件,则会无限递归下去,我们得找一个条件让它停下来。
我们知道,字符串的最后一个字符是 ’ \0 ’ ,那么当我们遇见 ’ \0 ',是不是就意味着就不用继续调用递归了呢?
假设可以,我们来试试结果

void reverse_string(char* string)
{if(*(string)!='\0'){reverse_string(string+1);} printf("%c",*string);
}

如果递归到最后一个字符时, string + 1 就是 ‘\0’ 的地址,当不满足条件,将从 ‘\0’ 开始打印,那我们所作的努力都会前功尽弃。所以我们就得在确保第一个字符不是 *’\0’*的情况下判断下一个字符到底是不是 ‘\0’
可以写成

void reverse_string(char* string)
{if(*(string+1)!='\0'){reverse_string(string+1);}  printf("%c",*string);
}

也可以写成

void reverse_string(char* string)
{if (*(++string) != '\0'){reverse_string(string);}printf("%c",*(string-1));
}

通过这样的层层递归,最终我们得到了我们想要的结果。

下面是这个递归程序的原理图以及供参考的代码:

void reverse_string(char* string)
{if (*(++string) != '\0'){reverse_string(string);}printf("%c",*(string-1));
}
int main()
{char arr[10] = "";scanf("%s",arr);reverse_string(arr);return 0;
}

巧妙运用递归实现字符串的倒序输出相关推荐

  1. c语言递归将字符串abcde倒序输出,请教C语言字符串倒序输出

    满意答案 bwrgqefgg 推荐于 2017.10.03 采纳率:55%    等级:10 已帮助:2169人 #include #include void main() { char string ...

  2. 【C语言函数递归】编程将字符串s倒序输出,要求利用函数递归实现。

    编程将字符串s倒序输出,要求利用函数递归实现. **输入格式要求:"%s" 提示信息:"input your string:\n" **输出格式要求:" ...

  3. 用递归思想轻松实现字符串的倒序输出

    如题目所言,代码如下: #include<iostream> using namespace std; void reverse(){char a;cin>>a;if(a!=' ...

  4. LeetCode输入字符串,倒序输出---C语言

    输入字符串,倒序输出-C语言 #include<stdio.h> #include<string.h> #include <iostream> using name ...

  5. 将一个字符串/字符串数组倒序输出

    1.将字符串倒序输出 //1.1直接遍历后倒序输出public void reverseList(){//1.将字符串如A excellent student倒序输出String str = &quo ...

  6. C语言简单递归实现字符串逆序输出

    题目内容的 "注意" 已经侧面规定了要用递归来实现: 输入是一个可能含有空格的串说明要用gets来读入字符串,如果利用scanf的话是无法读入一段含有空格的串. 下面先上一般方法: ...

  7. c 语言将字符串abcde倒序输出,C语言-实现字符串倒序输出

    方法1: Action() { //倒序输出 char *src="abcdefgh123"; char *desc; desc=(char *)malloc(100*sizeof ...

  8. 用C语言写个字符串一维数组的逆序输出,c语言怎么用数组倒序输出

    scanf("%d",&a[i]); //倒序输出数组内容 for( int *ptr=a+SIZE; ptr!=a; ) printf( "%d\t" ...

  9. 字符串逆序(数组倒序输出)

    题目信息: 样例输出 copy edcba 新手导读: 题目描述信息:字符串的倒序输出肯定是字符数组的倒序输出: 输入信息:输入条件是最后字符不为回车:所以应该先用变量存入字符进行判断,再使用这个字符 ...

最新文章

  1. python使用fpdf生成发票格式的pdf文件包含:文字、图片logo、表格、条形码等;
  2. 从Setting.settings到Resource.resx
  3. 浅析Banner设计
  4. [收集]美女与野兽——萨尔和吉安娜的绯闻
  5. [翻译]当SA帐号丢失时怎么办
  6. 源码0501-07-GCD的基本使用
  7. UVA12416 Excessive Space Remover【对数+字符流】
  8. jenkins 手动执行_Jenkins环境配置篇-节点增加
  9. 电子计算机及其部件,2021年电子计算机及其部件行业营销部门表格模板汇总.docx...
  10. 苹果智能拨号软件_iPhone智能性升级 多功能通话辅助软件
  11. 哈希表实现电话号码查找系统
  12. 《算法刷题LeetCode(中文版)》
  13. AMD HD7850 4G显卡刷Bios验真伪
  14. Android安全 Hook技术,Android下通过hook技术实现透明加解密保障数据安全
  15. 《基因突变》学习笔记
  16. hdu 6070 Dirt Ratio —— 二分+线段树
  17. 《财富》推荐的75部必看书籍
  18. org.springframework.core.styler包解读
  19. 玻璃材料封接工艺技术介绍-电连接器封装形式
  20. Tracking-Learning-Detection原理分析

热门文章

  1. 饶少阳:运营商急需网络大数据能力
  2. splinter iframe
  3. biee for mysql_BIEE11GRpd合并
  4. idea中同一project下创建多个module
  5. oracle高效率insert写法
  6. DC get-license
  7. 注册公司资本需要验资吗
  8. 计算机一级难还是二级难 有什么区别
  9. SDNU_ACM_ICPC_2020_Winter_Practice_3rd
  10. 计算机出现调试管理器,电脑出现实时调试怎么回事?电脑出现实时调试如何解决...