![[C语言]将一个字符串逆序,第1张 [C语言]将一个字符串逆序,第1张](/aiimages/%5BC%E8%AF%AD%E8%A8%80%5D%E5%B0%86%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%80%86%E5%BA%8F.png)
逆序指得不是反向输出,而是将字符串中的字符存储位置前后对称的互换。
递归方法:
#include
void func(char* parr)
{
int len = 0;//len记录字符串有几个字符
while(*(parr + len) != '\0')
{
len++;
}
char tmp = *parr;//把最左边的字符存到临时变量中
*parr = *(parr + len - 1);//用最右边的字符覆盖最左边的字符
*(parr + len - 1) = '\0';//将最右边的字符赋值'\0',这样下一次调用func(parr+1)时,计算的len就会-2.
if (len > 3)
{
func(parr + 1);
}
*(parr + len - 1) = tmp;//将tmp存的最左边的字符还回去
}
int main()
{
char arr[10] = "abcdef";
func(arr);
printf("%s", arr);
return 0;
}
非递归方法:
#include
void func(char* parr)
{
int len = 0;
while(*(parr + len) != '\0')//len记录字符串有几个字符
{
len++;
}
int left = 0;
int right = len - 1;
while (left < right)//*(parr+left)和*(parr+right)分别表示左右两边即将互换的两个字符
{
char tmp = *(parr + left);
*(parr + left) = *(parr + right);
*(parr + right) = tmp;
left++;
right--;
}
}
int main()
{
char arr[10] = "abcdef";
func(arr);
printf("%s", arr);
return 0;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)