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