C语言程序提问

/* Name: ex0309.c
函数递归调用示例(使用递归调的方法反向输出字符串)。
*/
#include <stdio.h>
int main()
{
void reverse();
printf("输入一个字符串,以'#'作为结束字符:");
reverse();
printf("\n");
return 0;
}
void reverse()
{
char ch;
ch=getchar();
if(ch=='#')
putchar(ch);
else
{
reverse();
putchar(ch);
}
}
请问下这个程序,当我输入abc#,输出是#ba,我不明白为什么输出为什么还有ba,求解详细的输出流程?

因为你的{
reverse();
putchar(ch);
}
reverse()函数后还有putchar(ch),当ch == ‘#’时,它继续执行putchar(ch),相当于又倒这把前面没有执行的putchar(ch),执行了追问

当ch == ‘#’时,就执行的是当 ch == ‘#’时 后面这个putchar(ch),,输出的是#;
此时 else后{ }中的内容应该一句都不应该执行啊,为什么会输出了cba呢

温馨提示:答案为网友推荐,仅供参考