1.非函数方法
//字符串逆序
//1.非函数方法
#include <stdio.h>
int main()
{
char arr[] = "a,b,c,d,e,f";//{a , b, c, d, e, f, \0 }
int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = sz - 2;//strlen(arr) -1
while (left < right)
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
printf("%s", arr);
return 0;
}
2.使用题中所给内容实现递归调用
编写一个函数revese_string(char * string)(递归实现)
//2.递归方式
//使用题中所给函数
#include <stdio.h>
int my_strlen(char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
void reverse(char* str)
{
char tmp = *str;//1.将a存储到临时变量中
int len = my_strlen(str);
*str = *(str + len - 1);//2.交换a(str第一个元素)和g(第str + len - 1个元素)
*(str + len - 1) = '\0';//3.将\0赋值给最后一个元素g
if (my_strlen(str + 1) >= 2)
{
reverse(str + 1);//4
}
*(str + len - 1) = tmp;//5.交换 将a赋给g
}
int main()
{
char arr[] = "abcdefg";//[a b c d e f g \0]
reverse(arr);
printf("%s\n", arr);
return 0;
}
3.简单易懂方法实现
//3.
#include <stdio.h>
int my_strlen(char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
void reverse(char arr[], int left,int right)
{
char tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
if (left < right)
{
reverse(arr, left + 1, right - 1);
}
}
int main()
{
char arr[] = "abcdefg";//[a b c d e f g \0]
int left = 0;
int right = my_strlen(arr) - 1;
reverse(arr,left,right);
printf("%s\n", arr);
return 0;
}
运行结果