鱼C论坛

 找回密码
 立即注册
查看: 2145|回复: 3

[已解决]C语言基础问题:反向打印用户输入的英文句子

[复制链接]
发表于 2023-3-23 05:10:03 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 Runpire 于 2023-3-23 05:11 编辑

《带你学C带你飞》

S1E34_递归 的课后作业例题:反向打印用户输入的英文句子  

麻烦鱼友们先看代码,求解答问题在最下面

  1. #include <stdio.h>
  2. // 反向打印用户输入的英文句子
  3. void getInput();
  4. void getInput(){
  5.         int ch;
  6.         ch = getchar();
  7. //                获取一个无符号字符
  8. // 判断是否等于 回车了 (输入结束后才可回车)
  9.         if(ch !='\n'){
  10. //        if( (ch=getchar()) !='\n'){
  11.                 getInput();
  12.         }else{
  13.                 printf("反向输出:");
  14. //                putchar(ch);
  15. // 在这里写putchar是不行的
  16.         }
  17.         putchar(ch);
  18. //  字符输出函数
  19. //        printf("%d",ch);
  20. }
  21. int main(void){
  22.         printf("请输入需要反向操作的英文句子:");
  23.         getInput();
  24. //        putchar('\n');
  25. //        表示输出换行符,即实现回车换行的功能
  26.         return 0;
  27. }
复制代码


我也非常疑惑这题的一个思路,

为什么 putchar(ch) 的位置要在分支同级,而不能在分支判断内 ? ? ?

为什么结果输出后不是依次获取的字符,而是可以反向输出字符了 ? ? ?

最佳答案
2023-3-23 05:10:04
在 else 内部岂不是只有当 ch 是换行符时才会输出,这样就无法输出其它字符了
这是利用递归完成逆序的,在递归向下的路径上读取并(隐式的)利用函数栈帧保存,在递归返回过程输出,后进先出自然逆序输出

最佳答案

查看完整内容

在 else 内部岂不是只有当 ch 是换行符时才会输出,这样就无法输出其它字符了 这是利用递归完成逆序的,在递归向下的路径上读取并(隐式的)利用函数栈帧保存,在递归返回过程输出,后进先出自然逆序输出
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-3-23 05:10:04 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
在 else 内部岂不是只有当 ch 是换行符时才会输出,这样就无法输出其它字符了
这是利用递归完成逆序的,在递归向下的路径上读取并(隐式的)利用函数栈帧保存,在递归返回过程输出,后进先出自然逆序输出
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-23 19:05:59 | 显示全部楼层
dolly_yos2 发表于 2023-3-23 09:05
在 else 内部岂不是只有当 ch 是换行符时才会输出,这样就无法输出其它字符了
这是利用递归完成逆序的,在 ...

你说 后进先出  我就大致能明白了,感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-23 19:09:39 | 显示全部楼层
dolly_yos2 发表于 2023-3-23 05:10
在 else 内部岂不是只有当 ch 是换行符时才会输出,这样就无法输出其它字符了
这是利用递归完成逆序的,在 ...

如果有空的话,还麻烦你能到我第二个贴看看,能以简单点的思维解答下我的困惑,是不是其实跟这个也差不多一个意思,非常感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 21:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表