#include<stdio.h>
int my_strlen(char* str) //自己编写strlen()
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
//void reverse_string(char* str) //循环方法
//{
// int left = 0;
// int right = my_strlen(str) - 1;
//
// while (left < right)
// {
// char tmp = *(str + left);
// *(str + left) = *(str + right);
// *(str + right) = tmp;
// left++;
// right--;
// }
//}
void reverse_string(char* str) //递归方法
{
int len = my_strlen(str);
char tmp = *str;
*str = *(str + len - 1);
*(str + len - 1) = '\0'; //最后一位先赋'\0',否则递归时下次交换就是第二位与最后一位换了
if ( my_strlen(str+1) >=2)
{
reverse_string(str + 1);
}
*(str + len - 1) = tmp; //递归交换结束后,再把前者的值给后者
}
int main()
{
char arr[] = "abcdef";
reverse_string(arr);
printf("%s\n", arr);
return 0;
}
【编程题】用递归使一串字符倒序并输出
于 2022-10-11 22:35:53 首次发布