猿问

关于C++的问题 望解释

  1. 编写一个求字符串长度的函数strlen(),再用strlen()函数编写一个函数revers(s)的倒序递归程序,使字符串s逆序。

在编写revers时   初学C++望各位大神可以详细解释解释 谢谢

int strlen(char *str) 

{  

  int len = 0;    

  while(str[len] != '\0')

    {        

       len++;    

     }      

return len; 

}



void revers(char *str) 

{    

     char c;    int loc, len;    

      len = strlen(str);    

      loc = len / 2 - 1;             //这里为什么要除以2-1

      while(loc >= 0) 

     {   c = *(str + loc);        

         *(str + loc) = *(str + len - loc - 1);       //这里的意思是?

         *(str + len - loc - 1) = c;        

           loc--;      

      }       

 str[len] = '\0';

}

风韵犹存的小明
浏览 983回答 1
1回答

ycwiacb

除以二减一是定位到字符串的中间位置左边的字符,如abcde,5/2-1等于1也就是b这个字符。然后5-1-1等于3也就是d这个字符,然后交换b和d,然后同理交换a和e,因为中间字符不管正序还是反序,位置始终不变所以用它的下标为准来达到交换它的左右字符从而达到反序的目的
随时随地看视频慕课网APP
我要回答