C语言:输入字符串basic,写出程序执行的结果,解释清楚

#include <stdio.h>
void reverse()
{
char c;
c = getchar();
putchar(c);
if(c!=' ')
reverse( );
putchar(c);
}
void main()
{
putchar(' ');
reverse();
}

一步一步地来,关键是要概念清楚。
putchar(" "); //输出空格
reverse(); //调用子程序
-c=getchar(); //得到第1个输入字符b赋值给c
-putchar(c); //输出c的值字符b,目前总输出为" b"
-c不等于空格,条件满足,执行reverse(); 注意这个子程序中c值为b
-这句要求你输入时在basic后面必须要有个空格才能结束,否则将会永远不满足条件"basic "
--c=getchar(); putchar(c); //得到第2个字符a并输出,总输出为" ba"
--c!=' '成立调用reverse();注意这个子程序中c值为a
---c=getchar(); putchar(c); //得到第3个字符s并输出,总输出为" bas"
---c!=' '成立调用reverse();注意这个子程序中c值为s
----c=getchar(); putchar(c); //得到第4个字符i并输出,总输出为" basi"
----c!=' '成立调用reverse();注意这个子程序中c值为i
-----c=getchar(); putchar(c); //得到第5个字符c并输出,总输出为" basic"
-----c!=' '成立调用reverse();注意这个子程序中c值为c
------c=getchar(); putchar(c); //得到第6个字符空格并输出,总输出为" basic "
------c!=' 不'成立不调用reverse();
------putchar(c); //输出c即空格,总输出为" basic "
------函数reverse返回上级调用点
-----putchar(c); //输出c,总输出为" basic c"
-----函数reverse返回上级调用点
----putchar(c); //输出c,总输出为" basic ci"
----函数reverse返回上级调用点
---putchar(c); //输出c,总输出为" basic cis"
---函数reverse返回上级调用点
--putchar(c); //输出c,总输出为" basic cisa"
--函数reverse返回上级调用点
-putchar(c); //输出c,总输出为" basic cisab"
-函数reverse返回上级调用点(main函数调用点)
main函数结束
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-07
用递归来反转字符串
在输入空格后递归结束,后输入的先输出,就完成了反转
第2个回答  2014-11-06
这个,基本上,解释起来好难,最好自己运行一下,观察一下结果
相似回答