编写:一个函数 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跳出循环。
注意:如果题目要求不能创建临时变量,用递归比较好一点。
推荐阅读
- C语言基础|C语言中阶第五篇(写一个强制关机的程序,以及goto语句跳出多层循环的应用)
- 浅析memcpy内存拷贝函数
- C语言基础(函数的声明与定义)
- linux网络编程
- C语言基础|.C/C++面试题
- C语言基础|C语言 链表操作
- C语言基础|C/C++中的i18n(wcstombs和mbstowcs使用
- Vc中 windows 常用的数据类型
- C中的数组