递归实现字符串反向排列

递归实现字符串反向排列决对不是一个好的方法,也不提倡这么去做。这里只是借助这个题深入的了解一下递归:

例:不使用库函数实现,递归实现字符串反向排列

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int my_strlen(char const *str)
{
	assert(str);
	int len = 0;
	while (*str)
	{
		len++;
		str++;
	}
	return len;
}
char* reverse(char *string)
{
	char tmp;
	int len = my_strlen(string);
	char *left = string;
	char *right = string + len - 1;
	if (*string)
	{
		tmp = *left;
		*left = *right;
		*right = ‘\0‘;
		reverse(string + 1);
		*right = tmp;
	}
	return string;
}
int main()
{
	char arr[50];
	scanf("%s", arr);
	char *ret=reverse(arr);
	printf("%s\n", arr);
	system("pause");

return 0;

}


时间: 2024-11-10 00:12:25

递归实现字符串反向排列的相关文章

【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。

/*编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数.*/ #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_string

【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。

//编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列. //要求:不能使用C函数库中的字符串操作函数. #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_stri

C语言 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列

编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. #include <stdio.h> #include <string.h> #include <assert.h> int reverse_string(char * str) { assert(str); int len=strlen(str); char *ch=str+len-1; while(len>1) { char tmp=*st

编写一个函数将参数字符串中的字符反向排列

编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数. 注意:将参数字符串中的字符反向排列,不是反向输出. 代码如下: #include<stdio.h> #include<stdlib.h> #include<assert.h> int my_strlen(char *str)//求字符串长度 { int count=0; while(*str++) { co

将参数字符串中的字符反向排列

//编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列. //要求:不能使用C函数库中的字符串操作函数. //第一种方法:递归法 #include <stdio.h> int reverse_string(char * string) {  if (*string != '\0')  {   string++;   reverse_string(string);   printf("%c", *(str

C语言编程 递归方法与非递归方法 实现将参数字符串中的字符反向排列

//题目要求要求:不能使用C函数库中的字符串操作函数(否则本题也没什么意义了啊) <1>非递归方法此方法基本思想是设立两个指针,分别指向字符串的头尾并且依次交换所指向的数据,代码中为left和right源代码: #include<stdio.h> #include<stdlib.h> #include<string.h>//因为要使用strlen()语句 void reverse_string(char str[]) { int temp; char *le

递归实现字符串翻转

编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数. 非递归实现 void reverse(char *str) { char *left = str; char *right = str + strlen(str) - 1; while (left < right) { char tmp = *left; *left = *right; *right = tmp; left++; right--

递归实现字符串字符反转

题目: 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数. 思路分析:以ABCDEFGH为例,每次将字符串的首字符和尾字符进行交换. 1.将A与I交换,此时字符串变为IBCDEFGA,而递归的字符串变成了BCDEFG; 2.将B和G交换,此时字符串变成IGCDEFBA,而递归字符串变成了CDEF; 依次类推,直到字符串里剩下一个字符不能交换为止,此例恰好两两配对,交换完. 源代码如下

字符串反向输出

#include <stdio.h>  reverse_string(char const * str) {    if( *str != '\0' )   {      str++;      reverse_string( str );        printf("%c",*(str-1)); }  } int main()  {     char *str="guruichun";   printf("原字符串为:  %s\n反向排列后