前言
编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefg” 。(15分)
//pStr是指向以’\0’结尾的字符串的指针
//steps是要求移动的n
代码实现如下:
提示:step和字符串均可以改成用scanf函数通过自己输入。
#include <stdio.h>
#include <string.h>
void reverseString(char *str, int start, int end) {
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
void LoopMove(char *pStr, int steps) {
int len = strlen(pStr);
if (len == 0) {
return; // 如果字符串为空,直接返回
}
steps = steps % len; // 取模以防steps超过字符串长度
reverseString(pStr, 0, len - steps - 1); // 先翻转前部分
reverseString(pStr, len - steps, len - 1); // 再翻转后部分
reverseString(pStr, 0, len - 1); // 最后整体翻转
}
int main() {
char str[] = "abcdefghi";
int steps = 2;
printf("Original string: %s\n", str);
LoopMove(str, steps);
printf("After moving %d steps to the right: %s\n", steps, str);
return 0;
}