字符串重排,可能是思路不对

img


#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    scanf("%d", &n);
    char r;
    r = getchar();
    while (n--)
    {
        char ch[1000] = { 0 };
        gets(ch);
        int len = strlen(ch);
        int m = ch[len - 1] - 48;
        char a[1000] = { 0 }, b[1000] = { 0 };
        for (int i = 0; i < m; i++)
            a[i] = ch[i];
        int k = 0;
        for (int i = m + 1; i < len - 2; i++)
        {
            b[k] = ch[i];
            k++;
        }
        char fu[200];
        for (int i = 0; i < len - m - 1; i++)
            printf("%c", b[i]);
        printf("%c", ch[m]);
        for (int k = 0; k < m; k++)
            printf("%c", a[k]);
    printf("\n");
    }
    return 0;
}

VS编译运行可以,但是在oj上答案错误

示例中1和3对不上


int main()
{
    int n;
    scanf("%d", &n);
    while (n--)
    {
        char ch[100] = {0}, a[100] = {0}, c;
        int m, t = 0;
        scanf("%s%d", ch, &m);
        int len = strlen(ch);
        c = ch[m];
        for (int i = m; i < len; i++, t++) //复制ch中m之后的到a
            a[i - m] = ch[i];
        for (int i = m - 1; i >= 0; i--, t++) //复制ch中m前的到a,倒序
            a[t] = ch[i];

        printf("%s\n", a);
    }
    return 0;
}