目录
1.初级要求
#include<stdio.h>
#include<stdlib.h>
void reverse_string(char arr[])
{
int left = 0;
int right = strlen(arr) - 1;
while(left<right)
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
int main()
{
char arr[] = "abcdef";
reverse_string(arr);
printf("%s\n", arr);
return 0;
}
2.不能使用C函数库中的字符串操作函数
#include<stdio.h>
int my_strlen(char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
void reverse_string(char arr[])
{
int left = 0;
int right = my_strlen(arr) - 1;
while(left<right)
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
int main()
{
char arr[] = "abcdef";
reverse_string(arr);
printf("%s\n", arr);
return 0;
}
3.递归实现字符串逆序且不能使用C函数库中的字符串操作函数
方法一
#include<stdio.h>
int my_strlen(char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
void reverse_string(char arr[])
{
char tmp = arr[0];
int len = my_strlen(arr);
arr[0] = arr[len - 1];
arr[len - 1] = '\0';
if (mt_strlen(arr + 1) >= 2)
reverse_string(arr + 1);
arr[len - 1] = tmp;
}
int main()
{
int i = 0;
char arr[] = "abcdef";
reverse_string(arr);
printf("%s\n", arr);
return 0;
}
方法二
#include<stdio.h>
int my_strlen(char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
void reverse_string(char arr[],int i)
{
char tmp = arr[i];
int len = my_strlen(arr);
arr[i] = arr[len - 1 - i];
arr[len - 1 - i] = tmp;
i++;
if (i < len - 1 - i)
reverse_string(arr, i);
}
int main()
{
int i = 0;
char arr[] = "abcdef";
reverse_string(arr,i);
printf("%s\n", arr);
return 0;
}