day4_字符串反转问题
来源:互联网 发布:单片机与modbus 编辑:程序博客网 时间:2024/06/07 01:07
一、第一种方法 指针
//二、字符串反转//第一种方法:指针int inverse(char *str1){ int length = strlen(str1); char *p1 = str1; char *p2 = str1 + length - 1; if(str1 == NULL) { return -1; } while(p1 < p2) { char c = *p1; *p1 = *p2; *p2 = c; ++p1; --p2; } printf("buf:%s \n",str1);}int main04(){ char buf[] = "abcdefg"; inverse(buf); printf("Hello world!\n"); system("pause"); return 0;}
二、第二种方法 递归逆序
1、通过递归的方式逆向打印
2,递归和全局变量(把逆序的结果存入全局变量)
3、递归和非全局变量(递归指针做函数参数)
理解递归的两点
1、参数的入栈模型
2、函数调用返回模型
2.1、通过递归的方式逆向打印 但是不能保存数据
void inverse2(char *p){ if(p == NULL)//递归结束的一场条件 { return; } if(*p == '\0')//递归结束的条件 { return; } inverse2(p+1);//此时没有执行打印,而是执行了让字符串的每一个地址入栈 printf("%c ",*p);}int main05(){ char buf[] = "abcdefg"; inverse2(buf); system("pause"); return 0;}
示意图如下:
2.2、递归和全局变量(把逆序的结果存入全局变量)
char g_buf[1000];// 全局变量 用于函数inverse3void inverse3(char *p)
{
if(p == NULL)//递归结束的一场条件
{
return;
}
if(*p == '\0')//递归结束的条件
{
return;
}
inverse3(p+1);//此时没有执行打印,而是执行了让字符串的每一个地址入栈
//strcat()
//strncpy(g_buf,p,1);// a 只会打印最后一个字符“a”
strncat(g_buf,p,1);//gfedcba
}
int main06()
{
char buf[] = "abcdefg";
memset(g_buf,0,sizeof(g_buf));
inverse3(buf);
printf("g_buf:%s \n",g_buf);
system("pause");
return 0;
}2.3、递归和非全局变量(递归指针做函数参数)
//3、递归和非全局变量(递归指针做函数参数)void inverse4(char *p,char *bufresult){ if(p == NULL || bufresult == NULL)//递归结束的一场条件 { return; } if(*p == '\0')//递归结束的条件 { return; } inverse4(p+1,bufresult);//此时没有执行打印,而是执行了让字符串的每一个地址入栈 strncat(bufresult,p,1);//gfedcba}int main07(){ char buf[] = "abcdefg"; char mybuf[1024] = {0}; inverse4(buf,mybuf); printf("递归和局部变量在一起mybuf:%s \n",mybuf); system("pause"); return 0;}
阅读全文
0 0
- day4_字符串反转问题
- day4_字符串之键值对问题的实现
- day4_字符串挖取
- day4_字符串的相关库函数
- 字符串反转系列问题
- 字符串反转问题
- 字符串反转系列问题
- 字符串反转问题
- 字符串反转问题
- c++ 字符串反转问题
- 字符串反转问题总结
- 字符串反转问题
- day4_字符串的两头堵模型
- 多个字符串反转问题
- C#字符串的反转问题
- 面试问题之 按单词反转字符串
- 一道经典的字符串反转问题**
- 一个关于字符串反转的问题;
- C++ 图论-并查集
- 【CUGBACM15级BC第29场 B】hdu 5171 GTY's birthday gift
- 基本排序算法总结
- web.config 中SessionState的配置
- 几个问题
- day4_字符串反转问题
- 修改ternimal个性化设置
- Python:获取当前脚本路径的姿势对比
- shell杀死进程, adb server is out of date. killing
- 脱敏数据整理
- win7 VS2013 新建工程 编译lua5.1 静态库
- csuoj1163寒衣调(乘法逆元)
- 对一个double四舍五入,返回int
- 湖南省第十一届大学生计算机程序设计竞赛 简单的图论问题?