阅读背景:

递归实现将参数字符串中的字符反向排列,要求不能使用C函数库中的字符串操作函数

来源:互联网 
<span style="font-size:18px;">#include<stdio.h>

void reverse_string(char *string)
{
	int len = 0;
	char*q = string;

	//strlen()的实现
	while (*q != '
<span style="font-size:18px;">#include<stdio.h>

void reverse_string(char *string)
{
	int len = 0;
	char*q = string;

	//strlen()的实现
	while (*q != '\0')
	{
		q++;
		len++;
	}

	if (len <= 1)
		return;
	else
	{
		//递归实现的字符串翻转
		int tmp = string[0]; 
		string[0] = string[len - 1];
		string[len - 1] = '\0';
		//reverse_string(string++);这样写是错误的,下一次递归调用时没有将下一个字符的地址传过去且当下次返回来时string已经发生改变
		//reverse_string(++string);这样写也是错误的,虽然下一次递归调用时将下一个字符的地址传过去了,但是当下次返回来时string也已经发生了变化
		reverse_string(string + 1);
		string[len - 1] = tmp;

	}
}
int main()
{
	char p[] = "bit-tech";
	reverse_string(p);
	printf("%s\n", p);
	return 0;
}
</span>


') { q++; len++; } if (len <= 1) return; else { //递归实现的字符串翻转 int tmp = string[0]; string[0] = string[len - 1]; string[len - 1] = '
<span style="font-size:18px;">#include<stdio.h>

void reverse_string(char *string)
{
	int len = 0;
	char*q = string;

	//strlen()的实现
	while (*q != '\0')
	{
		q++;
		len++;
	}

	if (len <= 1)
		return;
	else
	{
		//递归实现的字符串翻转
		int tmp = string[0]; 
		string[0] = string[len - 1];
		string[len - 1] = '\0';
		//reverse_string(string++);这样写是错误的,下一次递归调用时没有将下一个字符的地址传过去且当下次返回来时string已经发生改变
		//reverse_string(++string);这样写也是错误的,虽然下一次递归调用时将下一个字符的地址传过去了,但是当下次返回来时string也已经发生了变化
		reverse_string(string + 1);
		string[len - 1] = tmp;

	}
}
int main()
{
	char p[] = "bit-tech";
	reverse_string(p);
	printf("%s\n", p);
	return 0;
}
</span>


'; //reverse_string(string++);这样写是错误的,下一次递归调用时没有将下一个字符的地址传过去且当下次返回来时string已经发生改变 //reverse_string(++string);这样写也是错误的,虽然下一次递归调用时将下一个字符的地址传过去了,但是当下次返回来时string也已经发生了变化 reverse_string(string + 1); string[len - 1] = tmp; } } int main() { char p[] = "bit-tech"; reverse_string(p); printf("%s\n", p); return 0; } </span><span style="font-size:18px;">#include<stdio.h>



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: