c语言 函数递归键盘输入 abcdef,程序运行的结果是什么,请分析。 #include <stdio.h> void fun( ) { char c

键盘输入 abcdef,程序运行的结果是什么,请分析。
#include <stdio.h>
void fun( )
{
char c ;
if((c=getchar( ))!='\n')
fun( ) ;
putchar(c);
}
void main( )
{ fun( ); }
给我解释下怎样倒序输出的?谢谢啦!

你的程序进入到函数之后的if((c=getchar( ))!='\n')
你就开始输入a,由于a!='\n',就执行fun( ) ;语句;下一次函数执行到if((c=getchar( ))!='\n')时,同样的你输入b,由于b!='\n',就执行fun( ) ;语句;下一次函数执行到if((c=getchar( ))!='\n')时,同样的你输入c,由于c!='\n',就执行fun( ) ;语句;下一次函数执行到if((c=getchar( ))!='\n')时,同样的你输入d,由于d!='\n',就执行fun( ) ;语句;下一次函数执行到if((c=getchar( ))!='\n')时,同样的你输入e,由于e!='\n',就执行fun( ) ;语句;下一次函数执行到if((c=getchar( ))!='\n')时,同样的你输入f,由于f!='\n',就执行fun( ) ;语句;下一次函数执行到if((c=getchar( ))!='\n')时,你输入的是'\n',就不执行fun( ) ;跳到下一句putchar(c);然而你刚刚输入的是f,所以输出f;本次函数执行完毕,到上一次调用函数的putchar(c)而上次你输入的是e,所以输出e;这次函数执行完毕,同样的回到上一次调用函数的putchar(c);而上次你输入的是d,所以输出d;这次函数执行完毕,同样的回到上一次调用函数的putchar(c);而上次你输入的是c,所以输出c;这次函数执行完毕,同样的回到上一次调用函数的putchar(c);而上次你输入的是b,所以输出b;这次函数执行完毕,同样的回到上一次调用函数的putchar(c);而上次你输入的是a,所以输出a;这次函数执行完毕;整个过程也就完了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-20
比如你输入..ab回车.. 运行的过程大概就是这样...
void fun( )
{
char c ;
if((c=getchar( ))!='\n') 这个时候c=a 所以继续调用fun函数..

fun( )
{
char c ;
if((c=getchar( ))!='\n' 这个时候c=b 所以继续调用fun函数

fun( )
{
char c ;
if((c=getchar( ))!='\n' c=回车 不调用fun函数了..
fun( )
putchar(c); 直接输出 c 也就是回车...

}
putchar(c); 注意看括号..这里的c 是第二次调用fun函数的c 所以是b
}
putchar(c); 一样 这是第一次调用fun的c 所以 c是a

}

所以就倒序了= = 希望能帮到你..本回答被提问者采纳
第2个回答  2012-04-20
把递归调用理解成栈,先进后出,就行!
第3个回答  2012-04-21
楼上讲的很很详细了~结果就是fedcba

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网