按顺序改变字符串的位置,例如“abcdef”,旋转2位,变成“cdefab”,旋转3位,变成“defabc”
就是把前n位按顺序取出来,后面的元素前移,再将取出的元素放在数组的后面
第一种,常规思路,第二种方法蛮有意思的
例如“abcdef”旋转2位,我先把前两位逆序变成“bacdef”,然后再把后四位逆序,变成“bafedc”,最后再全部逆序,变成“cdefab”

#include <stdio.h>
#include <string.h>
void left_1(char a[], int n)
{
    int len = strlen(a);
    char k = 0;
    int i = 0, j = 0;
    for (i = 0; i < n; i++)
    {
        k = a[0];
        for (j = 0; j < len - 1; j++)//len-1=5
        {
            a[j] = a[j + 1];
        }
        a[len-1] = k;
    }
}
void exchange(char* left, char* right)
{
    char k = 0;
    while (left < right)
    {
        k = *left;
        *left = *right;
        *right = k;
        left++; right--;
    }
}
void left_2(char a[], int n)
{
    int len = strlen(a);
    exchange(a, a + n - 1);//逆序前n项
    exchange(a+n, a + len - 1);//逆序后len-n项
    exchange(a, a + len - 1);//逆序全部n项
}
int main()
{
    char a[] = "abcdef";
    int n = 0;
    printf("请输入要旋转的位数");
    scanf("%d", &n);
    //left_1(a,n);//基本思路是取出第一个元素,然后其他元素再依次前移,最后将取出的第一个元素放最后
    left_2(a, n);//这种思路是先把前n项逆序,然后再把后面的逆序,最后再全部逆序
    printf("%s\n", a);
    return 0;
}

新手,轻喷,写来以后复习用