【发布时间】:2017-03-02 17:45:55
【问题描述】:
谁能帮我理解这个字符串反转是如何工作的?
#include <stdio.h>
void reverse();
int main()
{
printf("Enter a sentence: ");
reverse();
return 0;
}
void reverse()
{
char c;
scanf("%c", &c);
if( c != '\n')
{
reverse();
printf("%c",c);
}
}
在这段代码中,函数 reverse 能够一次获取输入句子一个字符,对吗?如果它不是 '\n',它会再次调用 reverse 函数。所以下次取第二个字符时,第二个字符将在变量 c 中,对吗?
如果是这样,这段代码如何能够反转给定的任何字符串? c 中的最终值是多少?
【问题讨论】:
-
这个函数不会反转字符串,它只是通过在 print 语句之前小心地放置递归调用来反向回显标准输入。
-
现在,是时候学习如何使用调试器了,它可以让您逐步执行代码并检查变量。但是一张纸和一支铅笔应该足以弄清楚这是如何工作的。
-
我发誓他们是一个关于每天在这个网站上反转字符串的问题。
-
@RoadRunner - 有点像每次工作面试都有一个关于排序数组的问题:)
标签: c string recursion reverse