有这样一道题目:
我们把“cba”称为“abc”的反转串。
下面的代码可以把buf中的字符反转。其中n表示buf中待反转的串的长度。请补充缺少的代码。
void reverse_str(char* buf, int n)
{
if(n<2) return;
char tmp = buf[0]; //保存缓冲区第一个字符
buf[0] = buf[n-1]; //最后一个字符放到最前面
buf[n-1] = tmp; //第一个字符放到最后面
________________________;//填空
}
----------------------------------------------------------------------------------------------------------------------------
答案及解析:
参考答案1:reverse_str(buf+1,n-2);//这道题的解法其实是递归,注意每比较完一次,buf中待反转的串的长度减少2
参考答案2:reverse_str(++buf,n-2);//这道题的解法其实是递归,注意每比较完一次,buf中待反转的串的长度减少2
题目中说的很清楚:n表示buf中待反转的串的长度,一开始我没注意,写成了reverse_str(++buf,n-1),真是粗心那。
最后提醒一下:数组与指针的语法等价性: buf + 1 等价 &buf[1]
----------------------------------------------------------------------------------------------------------------------------------------------------------
您的十分满意是我追求的宗旨。
您的一点建议是我后续的动力。