11.c语言 实现把一个字符串循环右移 n 位。如"abcdehi", n = 2,则输出为 hiabcde.
时间: 2024-04-09 13:27:53 浏览: 122
以下是使用C语言实现将字符串循环右移n位的代码示例:
```c
#include <stdio.h>
#include <string.h>
void rightRotateString(char* str, int n) {
int len = strlen(str);
if (len == 0) {
return;
}
n = n % len; // 处理n大于字符串长度的情况
if (n == 0) {
return;
}
// 反转整个字符串
int i, j;
for (i = 0, j = len - 1; i < j; i++, j--) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
// 反转前n个字符
for (i = 0, j = n - 1; i < j; i++, j--) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
// 反转剩余的字符
for (i = n, j = len - 1; i < j; i++, j--) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
int main() {
char str[] = "abcdehi";
int n = 2;
rightRotateString(str, n);
printf("%s\n", str); // 输出 hiabcde
return 0;
}
```
首先,通过计算字符串的长度,处理n大于字符串长度的情况,并将n限制在字符串长度范围内。
然后,使用三次反转操作来实现循环右移n位。首先,反转整个字符串;然后,反转前n个字符;最后,反转剩余的字符。
最后,输出结果即可得到循环右移n位后的字符串。
阅读全文