c语言实现把一个字符串循环右移n位。如“abcdehi',n=2,则输出为hiabcde
时间: 2024-02-27 08:54:58 浏览: 221
您好!针对您的问题,类似于左移n位的实现,可以使用以下C语言代码实现将一个字符串循环右移n位的功能:
```c
#include <stdio.h>
#include <string.h>
void rightShift(char *str, int n);
int main() {
char str[] = "abcdehi";
int n = 2;
rightShift(str, n);
printf("%s\n", str);
return 0;
}
void rightShift(char *str, int n) {
int len = strlen(str);
n %= len;
int i, j, k;
char temp;
for (i = len - n, j = len - 1; i < j; i++, j--) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
for (i = 0, j = len - n - 1; i < j; i++, j--) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
for (i = 0, j = len - 1; i < j; i++, j--) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
```
与左移n位的实现类似,首先定义一个函数 `rightShift`,接收一个字符串指针 `str` 和一个整数 `n`,表示将字符串循环右移n位。其中,函数体内部首先获取字符串的长度 `len`,并将n对len取余,以便处理n大于len的情况。然后将字符串分为两段,第一段为后n个字符,需要翻转顺序;第二段为前面的字符,同样需要翻转顺序;最后将整个字符串翻转即可得到循环右移n位后的结果。
在main函数中,我们定义了一个字符串和一个整数n,然后调用 `rightShift` 函数将字符串循环右移n位,最后输出结果。
希望能够帮助到您!
阅读全文