例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
具体思路:
我们可以先将需要左旋的那个字符存入到一个数组中;
然后将剩下的字符从左向中依次移位;
最后将需要左旋的字符放到左旋的位置;
代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void Rotate(char* p, int num, int s)
{
int i = 0;
char set[10] = { '0' };
for (; i < num; i++) //将需要左旋的字符存入到一个数组中
{
set[i] = *(p + i);
}
for (i = 0; i < s - num; i++)//移动无需左旋的字符
{
*(p + i) = *(p + num + i);
}
int j = 0;
for (i = s - num; i < s; i++) //接着将需要左旋的字符放到左旋的位置
{
*(p + i) = set[j];
j++;
}
}
int main() {
char str[] = { 'A', 'B', 'C', 'D' };
int sz = sizeof(str) / (sizeof(str[0]));
int n = 0;
for (int i = 0; i < sz; i++)
{
printf("%c ", str[i]);
}printf("\n");
printf("你想要左旋多少个字符:\n");
scanf("%d", &n);
Rotate(str, n, sz);
for (int i = 0; i < sz; i++)
{
printf("%c ", str[i]);
}
printf("\n");
return 0;
}
搞懂思路之后写起来就不会很难啦!!