实现字符串右移循环
2016-06-14 09:52
411 查看
题目描述:请实现字符串右移循环,如“abcdefghi”右移3位变为“defghiabc”. 实现方法:
1.三步翻转法
代码实现如下:
2.暴力翻转法:
运行结果:
1.三步翻转法
代码实现如下:
<span style="font-size:24px;color:#666600;">
<span style="font-size:18px;color:#cc33cc;">#include<stdio.h> #include<assert.h> #include<string.h> void reverse(char *left,char* right) { assert(left); assert(right); while(left<right) { char tmp=*left; *left=*right; *right=tmp; left++; right--; } } void RightLoopMove(char* pStr,unsigned short steps) { int len = strlen(pStr); reverse(pStr,pStr+steps-1);//逆序左串 reverse(pStr+steps,pStr+len-1);//逆序右串 reverse(pStr,pStr+len-1);//逆序整个字符串 } int main() { char arr[]="abcdefghi"; int sz=sizeof(arr)/sizeof(arr[0]); RightLoopMove(arr,3); printf("%s\n",arr); system("pause"); return 0; </span></span>
<span style="font-size:18px;color:#cc33cc;"><span style="font-size:24px;color:#666600;">}</span></span>
2.暴力翻转法:
<pre name="code" class="cpp"><pre name="code" class="cpp"> <pre name="code" class="cpp"><span style="font-size:18px;color:#cc33cc;">//#include<stdio.h> //#include<assert.h> //#include<string.h> //void RightLoopMove(char* pStr,unsigned short steps) //{ // int len=strlen(pStr); // int cou=0; // assert(pStr); // /*steps=steps%len;*/ // while(steps--) // { // char tmp=pStr[0]; // for(cou=0;cou<len-1;cou++) // { // pStr[cou]=pStr[cou+1];// // } // pStr[cou]=tmp; // } //} // //int main() //{ // char arr[]="abcdefghi"; // RightLoopMove(arr,3); // printf("%s\n",arr); // system("pause"); // return 0; //} </span>
运行结果:
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua和C语言的交互详解
- Lua实现split函数
- Lua常用时间函数使用实例
- Lua函数与字符串处理简明总结
- Lua学习笔记之表和函数
- Lua中实现sleep函数功能的4种方法