1)void prn_it()
{
char c;
if((c=getchar())!= '\n')//犯了一个c==getchar()小错误
prn_it();(1)
putchar(c);
}
2)void prn_it()
{
char c;
if((c=getchar())!= '\n')//犯了一个c==getchar()小错误
prn_it();
putchar(c);
}
3)void prn_it()
{
char c;
if((c=getchar())!= '\n')//犯了一个c==getchar()小错误
prn_it();
putchar(c);
}
你可能不了解递归函数的执行顺序,以输入ab为例。由于getchar函数每次只处理一个字符,当你输入a时if语句检查不是回车键\n,所以第二次调用prn_it()
函数;这时你输入b,if语句检查不是回车键\n,所以第三次次调用prn_it();这时你按了回车键也就是c获得了\n,所以不再调用prn_it()函数。这样第三个prn_it()函数最先执行putchar函数,由于此时c=\n,所以只是换行并不做任何输出prn_it();第三个prn_it()执行完了以后,开始执行第二个putchar,c=b;然后是第一个