reverse_string(char *string)递归实现字符串翻转

函数实现之前 先看一个例子

void fun(int i)
{
	if (i > 0)
		fun(i / 2);
	printf("%d ",i);
}

int main(void)
{
	fun(10);

	return 0;
}

输出结果是什么?

这是《c语言深度剖析》中的一个例子  在这个例子中 printf(“%d ”,i);语句是fun函数的一部分 必定执行一次fun函数,就要打印一次。函数展开过程如下:

void fun(int i)
{
	//fun(i/2);
	if (i > 0)
	{
		if (i / 2 > 0)
		{
			if (i / 4 > 0)
			{
				....
			}
			printf("%d ",i/4);
		}
		printf("%d ", i / 2);
	}
	printf("%d ", i );
}

是不是清晰很多?

同样的思路 来完成reverse_string(char *string)函数   代码如下:

/*编写一个函数reverse_string(char * string)(递归实现)*/

#include<stdio.h>
#include<math.h>

void reverse_string(char *string)
{
	if (*(++string) != '\0')
		reverse_string(string);
	printf("%c",*(string-1));
}

int main()
{
	char *a = "abcde";
	reverse_string(a);
	printf("\n");
	return 0;
}

时间: 2024-08-05 00:22:57

reverse_string(char *string)递归实现字符串翻转的相关文章

【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

【C语言】reverse_string(char * string)(递归实现)

递归实现reverse_string(char * string)函数. 翻转 原来的字符串 是改变 不是打印出来. /* 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数. */ #include <STDIO.H> void reverse_string(char * string) { static char a[100]={0}; // 静态变量 记录字符串 static

编写一个函数reverse_string(char * string)(递归实现)

编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数. #include<stdio.h> #include<assert.h> #include<stdlib.h> int my_strlen(const char*str) { assert(str); int count = 0; while (*str) { count++; str++; } retur

【C语言】编写一个函数reverse_string(char * string)(递归实现

#include <stdio.h> #include <stdlib.h> void reverse_string(char * string) {     string++;     if (*string!='\0')     {         reverse_string(string);     }     string--;     printf("%c", *string); } int main() {     char *p = "

递归实现字符串翻转

编写一个函数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--

用交换实现字符串翻转

#include<stdio.h> char *reverse_string(char *string) { char *ret = string; //保存数组的首地址 char *left = string;//指向数组的第一个字符 char *right; //指向数组的最后一个非'\0'字符 char temp; //临时变量,用于交换 while(*string != '\0') { string++; } right = string-1; //执行完while后,string指向

实现数组字符串翻转的两种方法

//第一种方法:递归法 #include <stdio.h> int reverse_string(char * string) {  if (*string != '\0')  {      reverse_string(string+1);      printf("%c", *string);  } } int main() {  char *string = "abcde";  printf("源字符串为:%s\n", str