题目要求
编写一个函数 reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列,不是逆序打印。
要求:不能使用C函数库中的字符串操作函数。
比如:char arr[] = “abcdef”,逆序之后数组的内容变成:fedcba
代码实现
int my_strlen(const char* a) {
if (*a != '\0') {
return 1 + my_strlen(a + 1);
}
else {
return 0;
}
}
void reverse_string(char arr[],int left,int right)
{
if (left < right) {
//先将第一个与最后一个字符交换
char tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
//递归将剩下的字符交换
reverse_string(arr, ++left, --right);
}
}
int main() {
char arr[20];
gets(arr);
int left = 0;
int right = my_strlen(arr)-1;
reverse_string(arr,left,right);
printf("%s", arr);
return 0;
}