c语言问题,关于对getchar函数的营养不太懂。。主要看图。回答一下。谢谢各位大神。

如题所述

看15行和16可以知道,是先获取后面一个字符,然后再输出,所以执行顺序是这样的:
第13行获取第1个字符 n=5
第14行n=4调用palin(4)
第13行获取第2个字符 n=4
第14行n=3调用palin(3)
第13行获取第3个字符 n=3
第14行n=2调用palin(2)
第13行获取第4个字符 n=2
第14行n=1调用palin(1)
第8行获取第5个字符 n=1
第9行打印第5个字符
退出palin(1)调用,回到16行 打印第4个字符
退出palin(2)调用,回到16行 打印第3个字符
退出palin(3)调用,回到16行 打印第2个字符
退出palin(4)调用,回到16行 打印第1个字符追问

噢噢。。。。明白了。谢谢。。。还有一个问题,getchar函数读取一个之后。比如读取完第一个字符后,在读取完后循环回去就直接读取第二个字符,以此类推麽

追答

是的,getchar读取完一个字符,就会把这个字符从输入缓存中清除,比如输入12345,
第一次调用getchar,输入缓存中是12345,这时候读到1,然后把1从输入缓存中清除,这时候输入缓存就变成了2345,即输入缓存内容变化如下:
第一次调用getchar,输入缓存中是12345,读取1
第二次调用getchar,输入缓存中是2345,读取2
第三次调用getchar,输入缓存中是345,读取3
...
所以getchar永远都是读取输入缓存中的第一个字符

追问

噢噢。明白了。。。谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-07
因为你的函数里使用了递归啊。
n=5的时候,运行的是next=getchar();palin(n-1);到这一步是不会继续向下执行的,它会再去调用函数palin,此时传入的n=4...同理,当传入的n=1时,执行next=getchar();putchar(next);这个是你最后一个输入的字符,第一个显示出来。然后n=1时候的palin函数结束,也就是n=2的时候的palin函数在palin(1)执行结束,执行putchar(next)也就是输出你倒数第二个输入的字符,然后palin(2)执行结束,n=3时的palin(2)执行结束,输出....
第2个回答  2015-07-07
15和16可以知到
第3个回答  2015-07-07
你输入的是什么,它怎么输出的追问

输入5个任意字符,输出相反顺序的。例如输入asdfg,输出gfdsa

getchar不是只读取字符串的第一个字符么。。。为什么会倒过来先读取最后一个呢

相似回答
大家正在搜