C语言请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”
来源:互联网 发布:sql语句where多个条件 编辑:程序博客网 时间:2024/06/09 16:03
题目:请实现字符串循环右移函数。
列如字符串“abcdefghi”向右移2位就是“hiabcdefg”。
函数原型为:void RightLoopMove(char *pstr,unsigned short steps)
函数参数说明:pStr: Point to a ‘\0’ terminated string
steps: The rotate shift numbers
方法一:分三次翻转达到右移字符串的目的
代码实现如下:
#include <stdio.h>#include <string.h>#include <assert.h>void reverse(char *left, char *right){char temp;assert(left);assert(right);while (left < right){temp = *left;*left = *right;*right = temp;left++;right--;}}void RightLoopMove(char *pstr, unsigned short steps){int n = strlen(pstr);reverse(pstr, pstr + n - steps - 1);//第一次循环reverse(pstr + n - steps, pstr + n - 1);//第二次循环reverse(pstr, pstr + n - 1);//第三次循环}int main(){char arr[] = "abcdefghi";RightLoopMove(arr, 2);printf("%s\n", arr);system("pause");return 0;}
方法二:首先将最后一个字符赋给一个临时变量,再将前面的字符依次往后挪动一个位置,最后再把临时变量赋给第一个字符,重复上述步骤,从而达到右旋字符串的目的。
实现方法图示:
代码实现如下:
#include <stdio.h>#include <string.h>#include <assert.h>void RightLoopMove(char *pStr, unsigned short steps){assert(pStr);assert(steps);char *left = pStr;char *right = pStr + strlen(pStr) - 1;while (steps){char tmp = *right;char *p = right;while (p > left){*p = *(p - 1);p--;}*left = tmp;steps--;}}int main(){char a[] = "abcdefghi";RightLoopMove(a, 2);printf("%s\n", a);system("pause");return 0;}
方法三:运用库函数strcpy,此方法也很简便。
实现代码如下:
#include<stdio.h> #include<string.h> #include<assert.h> #define MAX_LEN 20 #pragma warning(disable:4996)void RightLoopMove(char *pStr, unsigned short steps){assert(pStr);char arr[MAX_LEN] = { 0 };int n = strlen(pStr) - steps;strcpy(arr, pStr + n); //需要移位的字符拷给arr strcpy(arr + steps, pStr); //再把剩下的字符拷给arr *(arr + strlen(pStr)) = '\0'; //上一步会多拷steps个字符,加\0的同时也解决了这个问题。 strcpy(pStr, arr); //arr里的字符拷给源串 }int main(){char arr[] = "abcdefghi";RightLoopMove(arr, 2); //测试右移两位 printf("%s", arr);getchar();return 0;}
0 0
- 【C语言】请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”
- C语言请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”
- (1423)编写函数实现字符串循环右移n位
- 字符串循环右移n位,函数
- 编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”
- 编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”
- 编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”
- C语言 字符串循环右移
- 字符串循环右移c实现
- 编写一个函数,将字符串循环右移n位
- 字符串循环右移n位的函数
- 实现字符串右移循环
- 实现字符串循环右移N位(改进版)
- 【C语言】实现字符串右移位函数
- Exe 字符串循环右移n位
- 字符串循环右移n位
- 字符串循环右移N位算法
- 字符串循环右移K位
- http请求工具类
- Matlab读取特定文件夹下特定后缀名文件
- Linux—管理磁盘
- redis数据结构存储SDS设计细节(redis的设计与实现笔记)
- Atom编辑器入门到精通(八) Markdown支持 (下)
- C语言请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”
- Java 7:Java集合从不懂到更不懂,不信来看
- 纪念曾经拥有的6D
- 细节决定成败
- 按之字形顺序打印二叉树
- spring data jpa 的坑
- malloc最大内存申请量
- 几种典型的立体匹配算法
- Linux编程:模拟进程调度算法