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

编写:一个函数 reverse_string(char * p)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。

#define_CRT_SECURE_NO_WARNINGS #include #includechar* reverse_string(char* p) { int n = 0; char tmp; char* q = p; while (*p != 0) { n++; p++; } if (n > 1) { tmp = q[0]; q[0] = q[n - 1]; q[n - 1] = '\0'; reverse_string(q + 1); q[n - 1] = tmp; } return q; }int main() { printf("put some words :\n"); char p[] = "ma ze zhen de he nu li "; printf("原字符串为:%s\n", p); printf("逆字符串为:%s\n", reverse_string(p)); system("pause"); return 0; }

其中n是计算字符串中字符的个数,while()循环目的是算出字符个数,另外,q是p建立的副本,利用p计算出n,但是p也被破环,所以就先把p里面所有的内容赋给q
利用循环实现字符串的逆序:
#include #includevoid nixu(char* arr) { int left = 0; int right = strlen(arr) - 1; while (left <= right) { char tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp; --right; ++left; } }int main() { char arr[] = "ma ze zhen de hen nu li"; printf("%s\n", arr); nixu(arr); printf("%s\n",arr); system("pause"); return 0; }

【将字符串中的字符反向排列】这个代码应该比递归的方法好理解
在while()循环语句里的内容也就是我们正常思路:创建一个临时变量,进行首尾的元素互换,互换之后左边加一,右边减一,当left>right跳出循环。
注意:如果题目要求不能创建临时变量,用递归比较好一点。

    推荐阅读