输入的5个字符,以相反顺序打印出来

来源:百度知道 编辑:UC知道 时间:2024/06/21 07:15:53
下面这个程序我完全不能理解,就是子函数else后面,怎么就会相反顺序打印出来呢?

/*题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
程序源代码*/

#include "stdio.h"
main()
{
int i=5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");
}
void palin(n)
int n;
{
char next;
if(n<=1)
{
next=getchar();
printf("\n\0:");
putchar(next);
}
else
{
next=getchar();
palin(n-1);
putchar(next);
}
}

顺着走一下就明白了.
palin(5) 是这样执行的:
1. if 5<=1 不成立, 转else 读取字符到 next中,执行 palin(4), 等待 palin(4) 的返回.
2. palin(4): if 4<=1 不成立,转else 读字符到next中,执行 palin(3)并等待返回.
3. palin(3): if 3<=1 不成立,转else 读字符到next中,执行 palin(2)并等待返回.
4. palin(2): if 2<=1 不成立,转else 读字符到next中,执行 palin(1)并等待返回.
5. palin(1): if 1<=1 成立, 读字符到next中,打出回车,及执行 putchar(next) 打出读到的字符. 返回.
6. 第4步此时等到了palin(1)的返回,继续执行下边的 putchar(next); 打出第4步读到的next;返回.
7. 第3步此时等到了palin(2)的返回,继续执行下边的 putchar(next); 打出第3步读到的next;返回.
8. 第2步此时等到了palin(3)的返回,继续执行下边的 putchar(next); 打出第2步读到的next;返回.
9. 第1步此时等到了palin(4)的返回,继续执行下边的 putchar(next); 打出第1步读到的next;返回.
10. 主函数等到了palin(5)的返回, 继续执行至退出.

应该能明白了吧...

你这程序我也没看懂。
但else括号里面的就是递归调用了。

直接用赋值替换不就完了
多用几个=
忽忽

C语言编写: 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 输入一个小于30000的正整数,要求以相反的顺序输出该数。 输入一串字符打印出单词的个数,以空格区分。 编写一个程序,输入一个正整数,要求以相反顺序输出。要求用do-while写出正确的程序。 从屏幕输入5个整数存储在数组,打印输入原始输入的5个数据,进行排序,由小到大的顺序重新输出 从键盘输入一组字符串,以相反的顺序输出显示 C语言 写一函数用“起泡法”对输入的10个字符由大到小顺序排序 输入一个字符串,按相反次序输出其中的所有字符 编写字符界面的Java Application ,将用户输入的小写字符转化成大写字符打印在屏幕上, c语言输入三个字符,按照从大到小或从小到大的顺序输入