编写一个函数reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。
注意:将参数字符串中的字符反向排列,不是反向输出。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int my_strlen(char *str)//求字符串长度
{
int count=0;
while(*str++)
{
count++;
}
return count;
}
void reverse_string(char *str)
{
int i=0;
int len=my_strlen(str);
assert(str);
if(*str)
{
char temp=str[0];//交换第一个和最后一个字符,将最后一个字符制成’\0’
str[0]=str[len-1];
str[len-1]='\0';
reverse_string(str+1);
str[len-1]=temp;//递归调用完后将temp赋给最后一个字符
}
}
int main()
{
char ch[20]={0};
gets(ch);
reverse_string(ch);
printf("%s\n",ch);
system("pause");
return 0;
}
reverse_string递归调用函数图
下面代码是通过递归将字符串逆序输出。
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void reverse_string(char *string)
{
assert(string);
if(*string)
{
reverse_string(string+1);//通过压栈的形式,先进后出
}
printf("%c",*string);
}
int main()
{
char ch[20]={0};
gets(ch);
reverse_string(ch);
system("pause");
return 0;
}
转载于:https://blog.51cto.com/luoyafei/1711079