c语言全排列递归算法 子串反向——递归

编写一个递归函数,能将输入的任意长度的字符串反向输出_百度知道
编写一个递归函数,能将输入的任意长度的字符串反向输出
不要太复杂的,要c语言刚入门程度的
;测试,*p);}int main(){fun(& /abcdef&).h&&#47测试通过;void fun(char *p){if(*(p+1)) fun(p+1);printf(&%c&quot!return 0!#include &lt
其他类似问题
为您推荐:
递归函数的相关知识
其他1条回答
%c&quot这个好办;
myprint(str + 1);
printf(&,先输出后面的字符就可以:void myprint(char * str){
if(str == 0 || *str == 0)
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列 - C语言当前位置:& &&&【c语言】编写一个函数reverse_string(char * strin【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列&&网友分享于:&&浏览:0次【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。/*编写一个函数reverse_string(char * p)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。*/
#include &stdio.h&
char * reverse_string(char *p)
int n = 0;
//用q保存开始的p
//计算出字符串的大小
while( *p != 0 )
//保存第一个字符到一个变量中,
//最后一个放到第一个的位置,
//最后一个位置放'\0',以此类推
if( n & 1)
temp = q[0];
q[0] = q[n-1];
q[n - 1] = '\0';
reverse_string( q+1 );
q[n - 1] =
int main()
char p[] = &dandanwa&;
printf(&原字符串是:%s\n&,p);
printf(&翻转后的字符串是:%s\n&,reverse_string(p));
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有题目: 编写一个函数reverse_string(char&*&string)(递归实现)实现:将参数中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。思路分析:以ABCDEFGH为例,每次将字符串的首字符和尾字符进行交换。1、将A与I交换,此时字符串变为IBCDEFGA,而递归的字符串变成了BCDEFG;2、将B和G交换,此时字符串变成IGCDEFBA,而递归字符串变成了CDEF;依次类推,直到字符串里剩下一个字符不能交换为止,此例恰好两两配对,交换完。如下:#include &stdio.h&
#include &string.h&
void reverse_string(char * string)
int len = strlen(string);
if (len &= 1)
char tmp = string[0];
string[0] = string[len - 1];
string[len - 1] = '\0';
reverse_string(string+1);
string[len - 1] =
int main()
char p[] = &ABCDEFGH&;
reverse_string(p);
printf(&%s\n&, p);
}运行结果如下:但是如果把代码中的 reverse_string(string+1);改成reverse_string(string++);和reverse_string(++string);运行结果会有什么不一样呢?下面我们来看一下运行结果:reverse_string(string++);的运行结果:reverse_string(++string);的运行结果:这两个结果都与reverse_string(string+1);的运行结果不一样,这到底是为什么呢?因为reverse_string(string++);是先用后加,即在这一次执行的时候它的值并没有改变,而是在下一次执行程序时它的值才会改变;而reverse_string(++string);是先加后用 ,即在这一次程序执行之前它的值已经改变了,所以这两个改变都不能达到我们想要的结果。使用C语言递归与非递归实现字符串反转函数char *reverse(char *str)的方法
字体:[ ] 类型:转载 时间:
本篇文章是对使用C语言递归与非递归实现字符串反转函数char *reverse(char *str)进行了详细的分析介绍,需要的朋友参考下
代码如下所示: 代码如下:// 递归实现字符串反转&& char *reverse(char *str)&& {&& &if( !str )&& &{&& &&return NULL;&}&& &&& int len = strlen(str);&& &&& if( len & 1 )&& &&& {&& &&&&&&& char ctemp =str[0];&& &&&&&&& str[0] = str[len-1];&&&&& &&&&&&& str[len-1] = '/0';// 最后一个字符在下次递归时不再处理&& &&&&&&& reverse(str+1); // 递归调用&& &&&&&&& str[len-1] =&& &&& }&& &&&&& }
// 非递归实现字符串反转char *reverse(char *str)&& {&& &if( !str )&& &{&& &&return NULL;&}&& &&& int len = strlen(str);&& &&&&& &&& for( int i = 0; i & len / 2; i++ )&& &&& {&& &&&&&&& // 交换前后两个相应位置的字符&& &&&&&&& temp = *(str + i);&& &&&&&&& *(str + i) = *(str + len - 1 - i);&& &&&&&&& *(str + len - 1 - i) =&& &&& }&& &&&&& }int _tmain(int argc, _TCHAR* argv[]){&char src[] = {"abcdef"};&char *pdest = reverse(src);&getchar();&return 0;}
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具& & sql语句& & 复制代码代码如下:& & reverse(substring(reverse(Path),1,charindex('/',reverse(Path)) - 1))& & SQL如何取出一个字符串中最后一个特殊字符右边的字符,例如:10*20*300,怎样得到300?& & 使用reverse配合charindex来实现。& & reverse是把字符串倒置,然后通过charindex来获取倒置之后第一个*的位置,然后使用substring函数进行字符串截取,截取后再使用reverse倒置回来即可。& & 以下为例子& & declare @str varchar(20)& & set @str = '10*20*300'& & select reverse(substring(reverse(@str),1,charindex('*',reverse(@str)) - 1))& & 结果是300& & 以上是SQLSERVER的语法。& & ORACLE数据库也有REVERSE函数,不过SUBSTRING要改成SUBSTR,CHARINDEX函数要改成INSTR函数& & SELECT reverse(substr(reverse('10*20*300'),1,INSTR(reverse('10*20*300'),'*') - 1)) FROM DUAL;& & 结果是300& & 您可能感兴趣的文章:javascript. 实现字符串反转的三种方法使用C语言递归与非递归实现字符串反转函数char *reverse(char *str)的方法javascript. 不用reverse实现字符串反转的代码java字符串反转示例分享& & QQ空间
百度搜藏更多& & Tags:字符串反转 reverse& & 复制链接收藏本文打印本文关闭本文返回首页& & 上一篇:重命名SQLServer数据库的方法& & 下一篇:SQL SERVER 2000通讯管道后复用劫持& & 相关文章sqlserver 数据库压缩与数据库日志(ldf)压缩方法分享sqlserver 2000 远程连接 服务器的解决方案sql 随机抽取几条数据的方法 推荐MSSQL 提取汉字实现语句如何强制删除或恢复SQLServer正在使用的数据库Transact_SQL 小手册阿拉伯数字转大写中文_财务常用sql存储过程MySql 安装时的1045错误sql清空表数据后重新添加数据存储过程的示例一段脚本实现自动备份并保存最近几天的SQL数据库& & 文章评论& & 最 近 更 新& & SQLServer2000 报1053错误(服务没有及时响SQLServer 数据库备份过程中经常遇到的九SQL SERVER 文件和文件组SQL Server误区30日谈 第5天 AWE在64位SQSQL Server 服务由于登录失败而无法启动Sql中将datetime转换成字符串的方法(CONVsql 时间函数 整理的比较全了sqlserver 临时表的用法SQLServer中用T—SQL命令查询一个数据库中SQL 特殊语句(学习笔记)& & 热 点 排 行& & SQL Server 2008图文安装教程SQL Server 2012 安装图解教程(附sqlserver中distinct的用法(不重SQL Server导入、导出、备份数据SQL语句去掉重复记录,获取重复记SQL Server数据库入门学习总结SQL Server错误代码大全及解释(sql convert函数使用小结sql 时间函数 整理的比较全了用SQL语句添加删除修改字段、一些
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.004 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益

我要回帖

更多关于 c语言递归函数 的文章

 

随机推荐