首页 > 试题广场 >

用递归算法实现转换,如“uvxyz”转换后为“zyxvu”,

[单选题]
用递归算法实现转换,如“uvxyz”转换后为“zyxvu”,请选择合适的语句()
void rev_str(char *s,int len)
{
    char ch;
    if ( len > 1)
        {
             ch = *s;
             *s = *(s+len-1);
             *(s+len-1) = ch;
             rev_str(?,?);
        }
}

  • s,len-1
  • s,len-2
  • s+2,len-2
  • s+1,len-2
首先这个题其实很好选出答案,因为s一定是要+1的,我们容易感到矛盾的是len为什么是-2而不是-1,这是正好是因为s进行了+1,所以len需要-2,这样第二次循环*(s+len-1)才能指向字符串倒数第二个字符。
发表于 2020-06-12 08:56:18 回复(0)
首先,首尾字符交换(zvxyu);然后,第二个字符和倒二位置字符交换(zyxvu);最后len<1,递归停止。
发表于 2019-10-31 00:43:04 回复(0)
*s指向字符串的第一个,一次操作后将字符串首尾两个字符交换。一次交换后*s指向下一个字符,同时待处理字符串长度减2.选D
发表于 2020-02-15 21:44:17 回复(4)
就是翻转字符串。每次前后对称位置翻转。
发表于 2022-11-13 12:44:57 回复(0)
看不懂代码
发表于 2022-03-08 16:21:01 回复(0)