实现字符串右循环移位函数。
来源:互联网 发布:联想风扇除尘软件 编辑:程序博客网 时间:2024/05/18 16:17
方法一:开辟一个空间存放移位后的字符串,但是空间耗费大且引用了库函数。程序与测试如下:
#include <stdio.h>#include <malloc.h>#include <string.h>void RightLoopMove(char *pStr,unsigned short steps){char *data;int len = strlen(pStr);//确定字符串长度steps %= len;//求模可知其实际所需移动最小位数if(steps == 0)//若为零,则不变{return;}data = (char*)malloc(sizeof(char)*len+1);//否则开辟字符串空间strcpy(data,pStr+(len-steps));//拷贝所需移位的后半部分strncat(data,pStr,len-steps);//将前半部分连接到后半部分之后strcpy(pStr,data);//将字符串拷贝回原字符串空间free(data);//释放开辟的空间}int main(){int i;char str[] = "abcdefghi";printf("%s\n",str);RightLoopMove(str,2);printf("%s\n",str);return 0;}
执行结果如图:
方法二:用一个中间变量存取最后一个数,其余整体进行操作,但是此方法时间耗费大,函数与测试如下:
#include <string.h>#include <stdio.h>void RightLoopMove(char *pStr,unsigned short steps){char tmp;//定义中间变量int i;//循环变量int len = strlen(pStr);//求字符串长度steps %= len;//求所需移动的位数if(steps == 0)//若为零则不移动{return;}while(steps > 0)//否则每次讲最后一位保存其余后移{tmp = pStr[len-1];for(i = len-1;i > 0 ;i--){pStr[i] = pStr[i-1];}pStr[0] = tmp;steps--;}}int main(){int i;char str[] = "abcdefghi";printf("%s\n",str);RightLoopMove(str,2);printf("%s\n",str);return 0;}
由以上两种方法可知要空间和时间都效率高的可能是很难达到的。
0 0
- 实现字符串右循环移位函数。
- 实现字符串右循环移位函数
- 实现字符串右循环移位函数
- 字符串右循环移位函数
- 字符串右循环移位
- 字符串右循环移位
- 字符串右循环移位
- 字符串右循环移位
- 【C语言】实现字符串右移位函数
- 【C语言】字符串右循环移位
- 【C语言】字符串右循环移位
- 字符窜右循环移位函数
- 循环右移位举例
- (1423)编写函数实现字符串循环右移n位
- 实现字符串右移循环
- 编程实现字符串的循环移位操作
- C语言实现一个循环移位函数
- 实现右旋、左旋循环移位函数
- C++中txt文件的读取和写入
- java报表开发工具FineReport报表和水晶报表的比较
- 进度条小飞机移动动画
- Blog迁移
- index_03_01 列表页 右边
- 实现字符串右循环移位函数。
- 查看进程内存使用情况
- 【SICP练习】146 练习4.2
- SOJ.Dice Game
- 常用正则表达式
- shell 脚本时,储命令返回的结果,用反引号即可
- linux基础教程(7)数据库操作与使用
- spring+动态代理
- 字符串删除数字大写变小写